2014-09-26 75 views
0

我剛剛深入Java泛型,遇到了令人困惑的事情。我有一個Class對象列表。這些Class對象是擴展MyType類的類。我想要做的是以下幾點:Java - 是Class <?類型的數組。擴展MyType>可能嗎?

Class<? extends MyType>[] myArray = myList.toArray(Class<? extends MyType>[]); 

現在我知道這是行不通的。但是如何創建這樣一個數組呢?我的麻煩是我需要將這個List作爲一個類數組傳遞給一個方法。我寧願避免@SuppressWarnings,並找出是否有可能。

回答

0

有規則「不要亂用泛型數組」。 Java中的限制是指出creation of arrays of parameterized types is not allowed。所以,你的問題的答案是沒有,你不能創建任何泛型類型的數組。

UPD:考慮使用任何集合類型而不是數組。他們會工作得很好。 或者你也可以(但最好不要那樣做)使用非泛型元素數組,然後將它們轉換爲適當的類型,禁止警告。

+0

我無法更改我正在使用的API。有問題的方法需要參數類 ...,我有什麼是Class <?的集合。擴展MyType>。 – Boon 2014-09-27 15:22:14

1

你可以像這樣傳遞列表,但不能像這樣實例化。必須用具體類替換實例化,然後分配給任何捕獲。

0

你必須在這裏提供你應該知道的具體類型,因爲myList的類型。