我想問一下關於Java類型擦除規則。Java泛型類型擦除
如果我們有類:
public class Shape{}
public class Circle extends Shape{}
public class Base<T extends Shape>{
T x;
public void setX(T t){}
}
public class MainClass(){
public static void main(String... _arg){
Base<? extends Shape> bs = new Base<Circle>();
bs.setX(new Circle()); // <- compilation problem
}
}
能否請您解釋一下我爲什麼調用setX的()方法會導致編譯問題?
'?超級形狀「將在那裏工作。 「Producer Extends,Consumer Super」 –
@MichaelMyers:Au contraire:http://ideone.com/TYr10C。 '基地<? super Shape>'接受'Shape'的任何*超類型*的'Base'。 –