问题遇到的现象和发生背景
当我用一个类型参数带有通配符的List引用接受一个arrylist时候,出现了以下问题,
虽然这行代码通过编译,但是无法对这个list添加任何对象,包括obj,他自己,以及他的子类。
问题相关代码,请勿粘贴截图
import java.util.ArrayList;
import java.util.List;
public class tes {
public static void main(String[] args) {
// 这里我使用第一种写法,下边这行代码可以通过编译器检查,但是add方法传入任何对象都会报错,包括obj对象
List<? extends A> list = new ArrayList<>();
// 下边这种写法和上边有相同的问题其中Ason是A的子类,但是add方法依然不接受Ason,A,或者OBject的实例作为参数
// List<? extends A> list = new ArrayList<Ason>();
// 下边这种写法会直接报错,甚至通不过编译,更不用谈调用list的add()方法了
// List<? extends A> list = new ArrayList<? extends A>();
list.add(new Object());
}
}
class A{}
class Ason extends A{}