是否可以创建用户定义的POJO的原语的新实例

时间:2013-04-24 09:50:15

标签: java reflection

我有类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;
   }
}

与上面相同,但我想创建一些对象数组。

1 个答案:

答案 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);
}