2014-10-04 44 views
-2

我用一些樣本研究泛型&通配符使用,我無法理解下面的代碼:Java的泛型和通配符代碼說明

public static <W extends Enum<?>> Enum<?> getType(Class<W> returnType){ return;} 

此外,這是延長一個正確的方法是什麼? (說FruitTypeVeggieType是枚舉類..):

public static <W extends fruitType & veggieType> Enum<?> getType Class<W> returnType) 
+2

你不明白什麼?我寫了一個答案,當我意識到我只是重新編寫代碼行,任何人都可以做 – Dici 2014-10-04 22:31:14

+0

所有枚舉部分..以及爲什麼類參數需要? – denden130 2014-10-04 22:33:00

回答

1
public static <W extends Enum<?>> Enum<?> getType(Class<W> returnType){ return;} 

意味着你在聲明一個靜態方法返回一個Enum。此方法將參數Class<W>作爲參數,其中W是從Enum派生的類。 Enum是原始類型,但在這裏您無法確定將使用哪個類將其用於參數化,此處爲<?>,這可能相當於<Object>什麼也沒有

Class也是原始類型,例如String.class返回Class<String>類型的實例。

你的最後一個片斷編譯(後編輯),並表示,而不是作爲一個Enum像在第一個片段,W必須的FruitTypeVeggieType一個亞型。

+0

感謝您的回覆。因此,如果我知道哪些類將用於參數化,哪些是fruitType和veggieType,那麼我是否應該將語句寫爲'public static '而不是第二個片段? – denden130 2014-10-04 22:43:57

+0

編輯你的問題,如果你想,我所知道的是第二個片段不編譯(雖然我不能確切地說爲什麼)。 – Dici 2014-10-04 23:00:26