2013-04-24 35 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); 
} 
相關問題