hallo,
ich möchte über reflection über ein konfigurations xml-file unterschiedliche typen von klassen (instanzen) erstellen. das problem wo ich häng ist der konstruktor - ich schaff es nicht verschiedene konstruktoren einzubauen bzw. zu konstruieren
es muss doch gehen das ich einmal eine Node (ist bei mir entweder Server oder Client) nur mit nodeName erstell, eine andere Node mit nodeName,nodeID, eine wieder andere Node mit nodeName,nodeID und millisekunden über reflection erstellen kann.
also in den Nodes hab ich schon verschiedene Konstruktoren eingebaut (also mit verschiedenen Parameterlisten wie mach ich das mit Reflektion das ich verschiedene getConstructor bzw. newInstance machen kann?
also z.B. einmal bräucht ich ein getConstructor(String.class,Integer.Type), ein anderes mal ein getConstructor(String.class,Integer.Type,Long.Type), ein anderes mal ein getConstructor(String.class) usw...
und eine kleine frage - wie schaff ich das das ich den code im forum leserfreundlich darstell - früher gabs ja die code-tags
lg.
ich möchte über reflection über ein konfigurations xml-file unterschiedliche typen von klassen (instanzen) erstellen. das problem wo ich häng ist der konstruktor - ich schaff es nicht verschiedene konstruktoren einzubauen bzw. zu konstruieren
es muss doch gehen das ich einmal eine Node (ist bei mir entweder Server oder Client) nur mit nodeName erstell, eine andere Node mit nodeName,nodeID, eine wieder andere Node mit nodeName,nodeID und millisekunden über reflection erstellen kann.
also in den Nodes hab ich schon verschiedene Konstruktoren eingebaut (also mit verschiedenen Parameterlisten wie mach ich das mit Reflektion das ich verschiedene getConstructor bzw. newInstance machen kann?
also z.B. einmal bräucht ich ein getConstructor(String.class,Integer.Type), ein anderes mal ein getConstructor(String.class,Integer.Type,Long.Type), ein anderes mal ein getConstructor(String.class) usw...
Java:
try {
objectOfNode = ((Class<Node>) className).
getConstructor(String.class,Integer.TYPE,Integer.TYPE,Long.TYPE).
newInstance(nodeName,nodeList.get(i).getInterval(),
nodeList.get(i).getNumberOfMessages(),nodeList.get(i).getClockSkew());//creates a node object
mNodeConnect = ((Class<Node>) className).getMethod("connect",Connector.class); //creates connect method
} catch (IllegalArgumentException e) {
System.err.print("Failure: IllegalArgumentException");
e.printStackTrace();
} catch (SecurityException e) {
System.err.print("Failure: SecurityException");
e.printStackTrace();
} catch (InvocationTargetException e) {
System.err.print("Failure: InvocationTargetException");
e.printStackTrace();
} catch (NoSuchMethodException e) {
System.err.print("Failure: NoSuchMethodException");
e.printStackTrace();
}
und eine kleine frage - wie schaff ich das das ich den code im forum leserfreundlich darstell - früher gabs ja die code-tags
Code:
bzw.
lg.
Zuletzt bearbeitet von einem Moderator: