我想我明白这一点,但显然不是...泛型,方法签名,分配
我有像这样的方法签名:
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