2009-11-05 16 views
14

我有一個Class變量,它擁有某種類型,我需要獲得一個包含相應數組類的變量。最好的我能拿出來的是這樣的:如何獲取Java中給定類的數組類?

Class arrayOfFooClass = java.lang.reflect.Array.newInstance(fooClass, 0).getClass(); 

有沒有辦法做到這一點,而不創建新的實例?

回答

11

如果你不想創建一個實例,你可以手動創建陣列的標準名稱,並通過名稱獲取類:

// Replace `String` by your object type. 
Class stringArrayClass = Class.forName(
    "[L" + String.class.getCanonicalName() + ";" 
); 

Jakob Jenkov argues in his blog您的解決方案是最好的一個,因爲它不需要弄亂字符串。

Class stringArrayClass = Array.newInstance(String.class, 0).getClass(); 
+2

他開始上述和與我有什麼結束。所以我猜''newInstance'是最簡單的方法。 – 2009-11-05 10:05:05

+0

它實際上兩種方式,但你說你不想創建一個新的實例。 – 2009-11-05 10:27:37

+0

是的。我實際上正在尋找更清潔的解決方案。這不是我不想要新實例,而是我寧願沒有一個:-) – 2009-11-06 01:40:59

-1
Class stringArrayOfClass = String[].class; 
+0

我不知道這種類型,它在一個類變量中。所以你的方法是行不通的。 – 2009-11-06 01:41:43

+2

謝謝你指出 – 2009-11-08 07:59:43

相關問題