2014-10-04 41 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