我想我明白這一點,但顯然不是...泛型,方法簽名,分配
我有像這樣的方法簽名:
void doSomething(List<TypeA> typeAs){...}
List<TypeA<TypeB>> getTypeBTypeAs(){...}
但如果我嘗試並致電
doSomething(getTypeBTypeAs());
我得到一個編譯錯誤:「在類型的方法DoSomething的(名單)...是不是適用於參數(名單>)」
但是如果我改變doSomething
的SIG以
void doSomething(List<TypeA<?>> typeAs){...}
它仍然無法正常工作,但
void doSomething(List typeAs){...}
顯然它的工作原理,因爲我繞過泛型。
這似乎很奇怪。
可有人能幫我嗎?
而且,在這種情況下,我想doSomething
包含任何泛型類型的TypeAs任何名單的工作;未定義的TypeB,TypeC等
感謝。
如果Effective Java有一個泛型例子,它必須在第二版中,因爲我的第一版坐在我的桌面上,比Java 5早幾年。 – Powerlord 2010-02-18 21:42:52
是的,它在第二版中。它可以在線,谷歌它(有效的Java泛型) – Bozho 2010-02-18 21:44:11
另外,如果你確實想要第二個func接受一個包含任何動物的Container,它將是'void func(Container <?extends Animal> animalContainer);'它會不會? – Powerlord 2010-02-18 21:44:51