2013-04-24 67 views
0

我有类TestClass是否有可能在运行时为此创建新实例? 就像我们为java原始类型创建TestClass someObj = new TestClass(); also TestClass[] someObj = new TestClass();一样。是否有可能创建用户定义的POJO的原语的新实例

如果如此善意地用例子支持答案,可以通过反思吗?

编辑:

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

不能用于实例化的阵列使用Class#newInstance

InstantiationException - 如果此类表示一个抽象类,接口,数组类,基本类型,或无效;或者如果班级没有空的构造函数;或者由于其他原因实例化失败。

这里是一个可能的解决方法:

@SuppressWarnings("unchecked") 
public static <T> T[] newArray(Class<T> clazz, int n) { 
    return (T[]) Array.newInstance(clazz, n); 
} 
相关问题