2011-05-16 41 views

回答

6

保留聲明(方法,字段,類,參數)具有具體類型部分的泛型。

所以你可以從這個聲明

public List<String> toString(List<Foo> foos) { .. } 

獲得的類型,但你從這個代碼不能:

public List<E> transform(List<E> list) { 
    // E is not accessible at runtime 
} 
+0

怪異的......所以如果我在做運行時方法調度(http://stackoverflow.com/questions/6021109/java-runtime-method-resolution)那麼我也必須擔心這方面? – 2011-05-16 17:51:31

+0

(在第二個例子中,你不需要'List '之前的'') – 2011-05-16 17:52:12

+0

我假定E是類聲明的一部分,但它也可能在方法中。 – Bozho 2011-05-16 17:58:34

1

泛型可以通過擦除工作,但代碼使用編譯後的類仍需要正確使用泛型。編譯器還有其他信息,您可以獲取該信息,但這不會改變其運行時行爲。