Dynamisches Einbinden von Klassen

Status
Nicht offen für weitere Antworten.

Streen

Mitglied
Hallo,

Als erstes versuche ich das Problem etwas zu schildern das ich habe:
Ich habe ein XML File in dem der Programmablauf konfiguriert werden soll, das in etwa so aussieht:
Code:
<Flow name="testflow">
		<Command name="Modul1" active="yes" option1="X"/>
		<Command name="Modul2" active="yes" option1="Y"/>
		<Command name="Modul3" active="yes" option1="Z"/>
		<Command name="Modul3" active="yes" option1="ZZ"/>
		<Command name="Modul4" active="yes" option1="A"/>
</Flow>

Im Programm soll dann halt nacheinander das Modul1, 2, dann zweimal das 3er und zum schluss das 4er ausgeführt werden.

Soweit ja absolut kein Problem. Das ding wird geparsed und dann in einem switch-Block werden die entsprechenden Klassen aufgerufen.

Die Idee die jetzt mein Cheffe und ich hatten, war, dass wir es gleich so machen: ModulName = Klassenname
Sprich wenn ein neues Modul hinzukommt, dass man nicht irgendwo in dem Switchblock herumfurwerken muss, sondern einfach das File in den entsprechenden Ordner für die Module packt und im XML File das dann einfach über den Namen aufrufen kann. Die einzelnen Module sind alle von einem Interfache abgeleitet, also hier sollte sichergestellt sein, dass die entsprechenden Funktionen/Datenelemente vorhanden sind. Sprich im Code müsste dann irgendwie etwas in der Art von: "parsedModuleName".execute(); stehen.

Jetzt wollte ich fragen, ob das überhaupt möglich ist, und wenn ja wie oder unter welchem Schlagwort ich da weitere Infos bekommen kann.

Vielen Dank schon mal im Vorraus,
Wenn ich irgendwas unklar ausgedrückt hab, steinigt mich oder fragt. :D

Streen

Ps.: Bin mir nicht 100%ig sicher ob das hier im richtigen Forum ist... *grübel*
 
B

Beni

Gast
Das was du da machen willst, ist möglich und sollte auch keine allzugrossen Probleme ergeben.

Stichwort "Reflection", insbesondere die Klasse "Class" und die Methode "Class#forName" solltest du dir mal angucken.

Mit einem "URLClassLoader" kann man sogar während das Programm schon läuft neue Klassen in das Programm laden.
 

Murray

Top Contributor
Wenn du ohnehin für die Module ein gemeinsames Interface definierst, dann kommst du wohl auch ohne Reflection aus (es sei denn, man sieht Class#forName bereits als Reflection an).
 

Streen

Mitglied
Super danke für die Stichworte, da findet man gut was. :)

Hier kurz meine Lösung falls jemand mal hier im Forum suchen sollte:

Code:
try {
	Class cls_Test = Class.forName("otherpackageName." + cls_currentCommand.getM_str_Module());
	Workflow test = (Workflow) cls_Test.newInstance(); //Workflow ist das Interface das alle Module gemeinsam haben
	test.execute();
} catch (ClassNotFoundException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} catch (InstantiationException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} catch (IllegalAccessException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu dynamisches singleton... Softwareentwicklung 41
R Suche Einbinden Softwareentwicklung 12
M DE-Mail einbinden Softwareentwicklung 10
J IntelliJ - Debugging funktioniert nur in manchen Klassen Softwareentwicklung 1
S Darstellung "globaler" Klassen/Libraries im Klassendiagramm Softwareentwicklung 3
T Wie die Multiplizität zweier bidirektionaler Klassen umsetzen? Softwareentwicklung 4
N UML Komponenten als Java-Klassen abbilden Softwareentwicklung 4
MiMa Organisation von Klassen Softwareentwicklung 5
P [UML] Klassen als Attribute = Assoziationen? Softwareentwicklung 14
C innere klassen auslagern Softwareentwicklung 12
S Design Pattern für zwei abhängige Klassen Softwareentwicklung 8
E Von Use-Case nach Klassen Diagramm Softwareentwicklung 3
F Control und Interface Klassen Softwareentwicklung 7
D Java in KLassen, schon vorhanden? Softwareentwicklung 3
G Klassen trennen zur verbesserung der Übersicht? Softwareentwicklung 9
W Frage zu a)Innere Klassen und b)OO Design Softwareentwicklung 13
W Statische Klassen oder neue Instanz einer Klasse nutzen? Softwareentwicklung 11
A Iterato-Pattern und Innere Klassen Softwareentwicklung 9
V 2 Klassen arbeiten am selben Objekt? Softwareentwicklung 2
V alle abgeleiten Klassen eines Interfaces finden? Softwareentwicklung 2
H aus allgemeinem array auf methoden abgeleiteter klassen zugr Softwareentwicklung 5
S Wieviele Klassen sind sinnvoll? Softwareentwicklung 3
K auf Attribute aus anderen Klassen zugreifen*help* Softwareentwicklung 3
P Projekt und Klassen Verwaltung (Wiederverwendung) Softwareentwicklung 4
L Aufgabenverteilung in zwei Klassen? Softwareentwicklung 6
L Frage zu Beziehungen zwischen Klassen und UML Softwareentwicklung 10
R klassen vererbung Softwareentwicklung 3

Ähnliche Java Themen

Neue Themen


Oben