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



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

相关内容

  • 没有找到相关文章

最新更新