今天复习泛型想起的一个疑问。我们知道? extends E:可以接受E类型或者E的子类型对象。具体代码是这个
ArrayList<? extends Object> a1=new ArrayList<String>();
a1.add("aa");
第二句代码是错的。我知道集合具体对象既可以存储String,也可以存储Object的其他子类,所以添加具体
的类型对象不合适,类型检查会出现安全问题。
? extends Object代表Object的子类型不确定,不能添加具体类型的对象。但是这样我就有个疑问,不能添加具体对象,
那能够添加什么对象呢?Object类对象是不是也不行?求理解透彻的大神给解答。
还有public static void method(ArrayList<? extends Object>a1){
a1.add("abc");
这第二句也是错的,因为具体类型的方法不确定,所以不能调用具体子类型的方法,既然这样又何必限定泛型上限呢?
这也是有点疑问。求解答
|