2
我尝试从类类中创建对象(通过java反射) - 用户选择构造函数,并且需要为此构造函数读取变量(它应该是一些原始类型)。现在你可以看到我的代码仅适用于整数参数。从构造函数对象(Java Reflection)中获取参数类型
如何动态地找出当前参数的类型并从键盘读取它?
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;
}
我只注意到你只需要它用于原语,所以这应该比我说的更简单。请注意,它也可以适用于其他类型。 –