public interface AnInterface {
Consumer<Object> getConsumer();
}
一個接口和一個實現類像
public class AClass implements AnInterface {
@Override
public Consumer<String> getConsumer() {
return System.out::println;
}
}
這(正確),因爲Consumer<String>
不會編譯沒有延伸Consumer<Object>
。
不過,如果我更改接口以對getConsumer一個額外的,未使用的類型參數,該錯誤消失,並罰款編譯:
<T> Consumer<Object> getConsumer();
這是怎麼回事?
這發生在JDK 1.8 u20中的javac和Luna中的Eclipse編譯器中。
感謝非常好的問題。 –
奇怪,它不首先編譯,你應該能夠覆蓋更具體的類型作爲返回,擴展(可分配給)原始類型http://stackoverflow.com/questions/14694852/can-overridden-方法 - 不同於回報類型 – Hurda
@Hurda,這是不一樣的。 –