我有类TestClass
是否有可能在运行时为此创建新实例?就像我们创建TestClass someObj = new TestClass(); also TestClass[] someObj = new TestClass();
的方式一样,java的基本类型也是如此。
是否可以通过反思,如果是的话,请用例子来支持答案。
编辑: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;
}
}
与上面相同,但我想创建一些时间数组的对象。
你不能使用class #newInstance来实例化一个数组:
InstantiationException -如果这个类代表一个抽象类,一个接口,一个数组类,一个基本类型,或void;或者如果类没有虚参构造函数;或者由于其他原因实例化失败。
这是一个可能的解决方案:
@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, int n) {
return (T[]) Array.newInstance(clazz, n);
}