我有类TestClass
是否可以在运行时为此创建新实例?
就像我们为java原始类型创建TestClass someObj = new TestClass(); also TestClass[] someObj = new TestClass();
相同的东西一样。
是否有可能通过反思,如果善于支持答案的例子。
编辑:
import java.awt.Rectangle;
public class SampleNoArg {
public static void main(String[] args) {
Rectangle r = (Rectangle) createObject("java.awt.Rectangle");
System.out.println(r.toString());
}
static Object createObject(String className) {
Object object = null;
try {
Class classDefinition = Class.forName(className);
object = classDefinition.newInstance();
} catch (InstantiationException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
} catch (ClassNotFoundException e) {
System.out.println(e);
}
return object;
}
}
与上面相同,但我想创建一些对象数组。
答案 0 :(得分:1)
您不能使用Class#newInstance来实例化数组:
InstantiationException - 如果此Class表示抽象类,接口,数组类,基本类型或void;或者如果该类没有无效的构造函数;或者如果实例化由于其他原因而失败。
以下是可能的解决方法:
@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, int n) {
return (T[]) Array.newInstance(clazz, n);
}