Я хотел бы спросить о правилах стирания типа 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() вызывает проблему компиляции?