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;
}
私はあなたがプリミティブのためだけに必要であることに気づいたので、これは私が言ったより簡単です。ちょうどそれが他のタイプのためにも働くことに注意してください。 –