JDK8,代碼如下:public class Foo<E> { public <T extends List> T get(T list) { return null;
} public void pass(Foo<?> foo) {
ArrayList arrayList = foo.get(new ArrayList());
} public void broken(Foo foo) { // 編譯器報(bào)錯(cuò) Incompatible types,無法轉(zhuǎn)化為ArrayList
ArrayList arrayList = foo.get(new ArrayList());
}
}Foo的泛型參數(shù)E和get方法的泛型參數(shù)T不同,按理來說是否聲明Foo為泛型應(yīng)該不影響get方法啊.這是JAVA作者由于某種原因有意為之,還是編譯器的推斷能力不足.
聲明一個(gè)類是否為泛型為什么會(huì)影響該類的其他泛型方法(與該類上的泛型參數(shù)不同)
人到中年有點(diǎn)甜
2018-11-13 20:44:35