java - 通配符 java 扩展

标签 java wildcard extends

考虑以下代码:

List<? extends Integer> lst= new ArraList<Integer>();
lst.add(5);//Compile error
lst.get(5);//OK

在第二个字符串中,我们遇到编译错误,因为我们必须保证 List<? extends Integer> 的所有潜在子类型中都有方法 add(int)编译器知道它的 null只是,第三个字符串返回未知类型,编译器将其转换为对象,不是吗?

最佳答案

PECS. Producer extends, Consumer super.

List<? super Integer> lst= new ArrayList<Integer>();
lst.add(5);// No Compile error

列表现在是一个消费者,你将对象放入其中......

还有这个

lst.get(5);

是一个不同的蛋糕...您提供您想要获取的整数索引...(更不用说Sotirios提到的:返回类型将是Object 在这种情况下。此外,在这个角色中,列表是一个提供者...)

关于java - 通配符 java 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990134/

相关文章:

java - 如果在字符串中出现的单词中的相邻字母相同则打印 "same"否则打印 "diff"

java - 如何在输入文本时启用按钮并在 Android java 中禁用?

bash - 在 make clean 上使用通配符时如何修复 Makefile 语法错误?

java - 如何在主类中扩展JFrame和JPanel?

java - 扩展类并使变量可变

java - Tomcat+Spring环境下的Jersey找不到ComponentProvider。为什么?

python - 一种通过使用通配符更改文件名中的索引来迭代一个规则的方法(在 snakemake 中)

wildcard - 在snakemake中,如何在分散-聚集过程中使用通配符?

java - 扩展父类中私有(private)成员的层次结构

Java 定时器帮助?