G
Guest
Gast
Hallo,
also ich habe bei mir ein Problem, wo ich mich frage ob Reflection geeignet wäre bzw. obs besser geht.
Hab ein Interface A. B und C implementieren dieses Interface. Der User kann zwischen B und C wählen (es wäre auch möglich das weitere Klassen das Interface implementieren, darüber weiss das Haupt-Programm nix).
In einer Konfig kann der User angeben welche Implementierung er verwenden will :
useSort=algorithms.sort.BubbleSort
Das Hauptprogramm soll damit nix direkt zu tun haben. Die Konfig wird ausgewertet und ich hatte jetzt vor über Reflection ein Objekt von (in dem Fall BubbleSort) dynamisch zu erzeugen (über newInstance).
Im Hauptprogramm ändert sich nichts, da ich dort als attribut ein objekt vom typ des Interface hab, das von BubbleSort implementiert wird. Der ruft einfach eine Methode auf das Attribut auf. Über Reflection will ich dem User die Möglichkeit geben zu bestimmen was verwendet wird.
Alternativ wäre es sicher möglich in der KonfigKlasse abzufragen: Welche Klasse ist dort angegeben, erzeuge ein Objekt X falls der Eintrag Y ist. Das Problem dabei ist aber, dass ich dann bei jeder neuen Klasse die Datei ändern muss etc. Ich finde den bisherigen Einsatz (bzw. den geplanten) von Reflection hier aber besser.
Was sagt ihr dazu?
also ich habe bei mir ein Problem, wo ich mich frage ob Reflection geeignet wäre bzw. obs besser geht.
Hab ein Interface A. B und C implementieren dieses Interface. Der User kann zwischen B und C wählen (es wäre auch möglich das weitere Klassen das Interface implementieren, darüber weiss das Haupt-Programm nix).
In einer Konfig kann der User angeben welche Implementierung er verwenden will :
useSort=algorithms.sort.BubbleSort
Das Hauptprogramm soll damit nix direkt zu tun haben. Die Konfig wird ausgewertet und ich hatte jetzt vor über Reflection ein Objekt von (in dem Fall BubbleSort) dynamisch zu erzeugen (über newInstance).
Im Hauptprogramm ändert sich nichts, da ich dort als attribut ein objekt vom typ des Interface hab, das von BubbleSort implementiert wird. Der ruft einfach eine Methode auf das Attribut auf. Über Reflection will ich dem User die Möglichkeit geben zu bestimmen was verwendet wird.
Alternativ wäre es sicher möglich in der KonfigKlasse abzufragen: Welche Klasse ist dort angegeben, erzeuge ein Objekt X falls der Eintrag Y ist. Das Problem dabei ist aber, dass ich dann bei jeder neuen Klasse die Datei ändern muss etc. Ich finde den bisherigen Einsatz (bzw. den geplanten) von Reflection hier aber besser.
Was sagt ihr dazu?