有沒有辦法動態地使用類似J2ME黑莓創建實例從數組類
MyClass[].newInstance();
我知道,它拋出一個InstantiationException
創建從Class
對象的數組,但有我的方式使用Class
對象實例化一個數組,指示它的類型?
有沒有辦法動態地使用類似J2ME黑莓創建實例從數組類
MyClass[].newInstance();
我知道,它拋出一個InstantiationException
創建從Class
對象的數組,但有我的方式使用Class
對象實例化一個數組,指示它的類型?
由於java.lang.reflect.Array.newInstance()不可用J2ME,我覺得你需要一個循環來爲每個對象做到這一點:
private Object[] createArray(String fullClassName, int length) {
Object[] objects = new Object[length];
try {
Class c = Class.forName(fullClassName);
for (int i = 0; i < objects.length; i++) {
objects[i] = c.newInstance();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
return objects;
}
,記得完全限定域名(如果你使用字符串化類名):
Object[] array = createArray("mypackage.Widget", 10);
與
package mypackage;
public class Widget {
public int foo() {
return 5;
}
}
注意,getConstructor() method在BlackBerry Class中不可用,因此您僅限於使用無參數構造函數創建對象。
你能否澄清?聽起來像你想要一個數組,其中的類型可以設置/更改。我認爲這是不可能的。最近我能想到的是Object [] array = new MyClass [10];' 你也許可以使用這個想法,並創建一個類來將數組中的對象複製/轉換爲另一種類型。 – Kevin
相關?:http://stackoverflow.com/q/1632130/813951 –
對於第一個評論:我不知道類,(我是一個類型類的變量)。對於第二個評論:我正在使用J2ME。底線,不可能。 –