繁体   English   中英

下界通配符方法

[英]Lower bounded wildcard method

任何人都可以让我理解为什么这段代码会出现编译器错误:

List<? super A> superList = new ArrayList<>();
superList.add(new Object());

虽然这是完全正确的:

setSuper(new ArrayList<Object>());

public void superMethod(List<? super A> list) {
    //...
}

我知道下限将可用类型缩小到 A 或其后代,但是为什么在方法参数方面这对编译器来说很好?

ArrayList<Object>List<? super A> List<? super A>

ArrayList<A>也是List<? super A> List<? super A>

但是您不能将new Object()添加到ArrayList<A> 所以不是所有的List<? super A> List<? super A> values 可以添加一个对象,所以编译器正确出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM