我無法通過通配符理解Java泛型的更精細的點。具體來說,爲什麼不編譯。帶通配符的Java非泛型不編譯
public class Test {
abstract class Function<A, B> {
abstract B call(A a);
}
interface PropertyType {
String bubbles();
}
class Apartment implements PropertyType {
@Override
public String bubbles() {
return "bubbles";
}
}
public void invokeFunctionOnAList() {
List<Apartment> apts = new ArrayList<Apartment>();
functionLoop(apts, new Function<Apartment, String>() {
@Override
String call(Apartment a) {
return a.bubbles();
}
});
}
public void functionLoop(List<? extends PropertyType> list, Function<? extends PropertyType, String> t) {
for (PropertyType p : list) {
t.call(p);
}
}
}
我可以看到這個問題,大多數Java編譯器都會對它做出相當明確的說明。你會得到什麼錯誤? – PaulJWilliams 2010-11-16 11:47:05
如果您要報告某些內容無法編譯,您應該*總是*包含錯誤消息和位置。 – 2010-11-16 11:47:13