Hallo,
ich muss in einer Software Objekte dynamisch über den Klassennamen erstellen. Die Methode dafür sieht so aus, und lief bisher immer gut:
Ich versuche in diesem Beispiel eine Objekt der Klasse UserData zu erstellen:
Die Klasse "CommunicationObject" liegt in einem anderen Projekt, welches aber über Maven referenziert wird. Bevor ich das Projekt auf Maven umgestellt habe, lief es. Jetzt nicht mehr.
Der Aufruf forName liefert mir die richtige Klasse zurück, allerdings sind alle Werte der Variablen (im Debugger zu sehen) null. Wenn ich comClass.newInstance() aufrufe, bekomme ich null als returnValue.
Wenn ich mit dem Debugger einen Breakpoint im Konstruktor von UserData setze, sehe ich aber eindeutig, dass dieser aufgerufen wird. Habt ihr eine Idee, ich bin ratlos? :bahnhof:
ich muss in einer Software Objekte dynamisch über den Klassennamen erstellen. Die Methode dafür sieht so aus, und lief bisher immer gut:
Java:
private CommunicationObject instantiateTransferObject(String comObjectClassPath) {
CommunicationObject comObject = null;
try{
@SuppressWarnings("unchecked")
Class<? extends CommunicationObject> comClass = (Class<? extends CommunicationObject>) Class.forName(comObjectClassPath);
comObject = comClass.newInstance();
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch(InstantiationException e) {
e.printStackTrace();
} catch(IllegalAccessException e) {
e.printStackTrace();
}
return comObject;
}
Ich versuche in diesem Beispiel eine Objekt der Klasse UserData zu erstellen:
Java:
public class UserData implements CommunicationObject {
private static final long serialVersionUID= -3663712107665665551L;
private long id= 0;
private String name= null;
private RoleData role= null;
private String hash= null;
public UserData() {
System.out.println("Constructor UserData");
}
public long getId() {
return id;
}
public void setId(long id) {
this.id= id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
public RoleData getRole() {
return role;
}
public void setRole(RoleData role) {
this.role= role;
}
public String getHash() {
return hash;
}
public void setHash(String hash) {
this.hash= hash;
}
public String toString() {
return name;
}
}
Die Klasse "CommunicationObject" liegt in einem anderen Projekt, welches aber über Maven referenziert wird. Bevor ich das Projekt auf Maven umgestellt habe, lief es. Jetzt nicht mehr.
Der Aufruf forName liefert mir die richtige Klasse zurück, allerdings sind alle Werte der Variablen (im Debugger zu sehen) null. Wenn ich comClass.newInstance() aufrufe, bekomme ich null als returnValue.
Wenn ich mit dem Debugger einen Breakpoint im Konstruktor von UserData setze, sehe ich aber eindeutig, dass dieser aufgerufen wird. Habt ihr eine Idee, ich bin ratlos? :bahnhof:
Zuletzt bearbeitet: