[英]How to create an instance of a class with a variable string name in Java?
[英]How to create class instance by string name
我想通過字符串變量創建新的類實例,將int []作為參數傳遞給此構造函數,然后將此實例保存在數組列表中。
更重要的是,該類來自其他一些類,比如說Bar。 該數組列表的類型為Bar。 所以:
List<Bar> something = new ArrayList<Bar>();
String name = "Foo";
int[] arr = {1, 2, 3, 4, 5};
try {
Class myClass = Class.forName(name);
Class[] types = {Integer.TYPE};
Constructor constructor = myClass.getConstructor(types);
Object[] parameters = {arr};
Object instanceOfMyClass = constructor.newInstance(parameters);
something.add(instanceOfMyClass);
} catch(ClassNotFoundException e) {
// handle it
} catch(NoSuchMethodException e) {
// handle it
} catch(InstantiationException e) {
// handle it
} catch(IllegalAccessException e) {
// handle it
} catch(InvocationTargetException e) {
// handle it
}
這是我想出的,但是不幸的是它不起作用。 我如何在這里傳遞整數數組(類型是什么)? 如何將這個實例添加到此處給出的數組列表中(拋出一個錯誤,我必須將Foo類的實例強制轉換為Foo類)?
Class[] types = {Integer.TYPE};
Constructor constructor = myClass.getConstructor(types);
這將查找采用一個int
或Integer
而不是int
數組的構造函數。
如果要查找采用int[]
的構造函數,則傳遞正確的參數:
Class[] types = { int[].class };
Constructor constructor = myClass.getConstructor(types);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.