Ich versuche, ein Objekt außerhalb der Klasse zu erstellen (via Java - Reflexion) - Benutzer wählen Sie einen Konstruktor und ich muss Variablen für diesen Konstruktor lesen (es sollte einige der sein primitive Typen).
Wie Sie jetzt sehen können, funktioniert mein Code nur für ganzzahlige Parameter.Get Argumente Typen von Constructor Objekt (Java Reflection)
Wie kann ich dynamisch den Typ des aktuellen Arguments herausfinden und es von der Tastatur lesen?
public static Object chooseConstr(Class cls) throws IllegalAccessException, InstantiationException, InvocationTargetException {
Scanner keyboard = new Scanner(System.in);
Constructor[] constructors = cls.getDeclaredConstructors();
System.out.println("Choose constructor from the list: ");
System.out.println(Arrays.toString(constructors));
int constr = keyboard.nextInt();
constr--;
Object[] arguments=new Object[constructors[constr].getParameterCount()];
for(int i=0; i<arguments.length; i++){
System.out.println("Write argument #"+(i+1));
arguments[i]=keyboard.nextInt();
}
Object object = constructors[constr].newInstance(arguments);
System.out.println("Object created!");
return object;
}
Ich habe gerade festgestellt, dass Sie es nur für Primitive benötigen, also sollte dies einfacher sein als ich sagte. Beachten Sie, dass es auch für andere Typen funktionieren kann. –