R
raphk
Gast
Hallo
Ich habe ein Problem bei einem Programm das einen dynamischen Klassenaufruf erzeugen soll. Im Endeffekt gehts darum eine XML Datei auszulesen. Dann bestimmt man via DropDown Liste im Programm welche Klasse die XML bearbeitet und diese führt dann je nach Klasse bestimmte Funktionen mit den XML Tags aus.
Also ganz banal gesagt:
... wobei vendor die Klasse ist, die aufgerufen wird und commandesXML die Überklasse. So wies hier steht funktionniert das Programm auch wunderbar.
Jetzt will ich aber das ganze dynamisch machen sprich anstatt mit den if(vendor == X) else .... nur noch eine Funktione die sich via Class.forName() ihre Klasse selber sucht und diese dann aufruft. Also quasi so in etwa:
Problem ist nur das das bei mir immer zu nem Error führt. Ausserdem besitzen die Klassen in ihrem Konstruktor eine Variable die man mitgibt. Und ein newINstance(VARIABLE) funktionniert auch nicht. Problem ist das er mir sagt das er beim Class.forName(X) die Klasse X nicht findet obsschon diese da ist und auch alles korrekt geschrieben ist.
Ich hab auch noch ein Problem wenn ich versuche den Konstruktor der Klasse zu bekommen den ich brauche um ein neues Objekt zu initieiren.
So klappt das für Integer. Aber wie schreib ich das denn wenn ich ein Klassenobjekt mitgeb. Also mein Konstruktor sieht folgendermaßen aus:
Und wenn ich einfach getConstructor(RESERVATION).newInstance(res) oder auch getConstructor(Package.RESERVATION) mach kommt ein Fehler und anders wüsst ich nicht was ich da reinschreiben sollte.
Naja ich hoffe mal ihr habt plus minus verstanden worum es mir geht und noch mehr hoffe ich das mir einer weiter helfen kann!
Ich habe ein Problem bei einem Programm das einen dynamischen Klassenaufruf erzeugen soll. Im Endeffekt gehts darum eine XML Datei auszulesen. Dann bestimmt man via DropDown Liste im Programm welche Klasse die XML bearbeitet und diese führt dann je nach Klasse bestimmte Funktionen mit den XML Tags aus.
Also ganz banal gesagt:
Code:
if(vendor.equals("reservation_simple"))
{
commandesXML rs = new reservation_simple(aa);
return rs;
}
else if(vendor.equals("reservation_advance"))
{
commandesXML rs = new reservation_advance(aa);
return rs;
}
Jetzt will ich aber das ganze dynamisch machen sprich anstatt mit den if(vendor == X) else .... nur noch eine Funktione die sich via Class.forName() ihre Klasse selber sucht und diese dann aufruft. Also quasi so in etwa:
Code:
Class clazz = Class.forName(vendor);
Object o = clazz.newInstance();
Ich hab auch noch ein Problem wenn ich versuche den Konstruktor der Klasse zu bekommen den ich brauche um ein neues Objekt zu initieiren.
Code:
Object o = cl.getConstructor(Integer.TYPE, Integer.TYPE).newInstance(1,2);
Code:
public reservation_simple(RESERVATION res)
{
objRes = res;
}
Naja ich hoffe mal ihr habt plus minus verstanden worum es mir geht und noch mehr hoffe ich das mir einer weiter helfen kann!