java - Java 泛型扩展和超级
问题描述
当我编写以下代码时出现错误,
List<? extends Number> myList = new ArrayList<>();
myList.add(2);
myList.add(10);
我知道为什么会出错,因为?表示任何扩展 Number 的类,它可以是 Integer、Double 等,所以因为类型未指定,所以我无法在此列表中添加任何内容。我的问题是列表中不能包含项目的用例是什么?我唯一能想到的是在定义时是这样的:
public List<? extends Number> testMethod()
{
var x = new ArrayList<Integer>();
x.add(2);
x.add(5);
return x;
}
那是唯一的用例吗?
我的第二个问题是两个片段之间有什么区别?
List<? super Number> myList = new ArrayList<>();
myList.add(2);
myList.add(5L);
myList.add(5.5d);
myList.add(3.2f);
System.out.println(myList);
List<Number> myList = new ArrayList<>();
myList.add(2);
myList.add(5L);
myList.add(5.5d);
myList.add(3.2f);
System.out.println(myList);
解决方案
推荐阅读
- php - 如何在 TYPO3 7.6 中实现扩展后端部分的控制器
- python-3.x - 如何加快验证素数的python程序?
- javascript - 重复一个元素,直到它覆盖整个屏幕
- reactjs - 我正在寻找一种方法来修复 react material-ui 中表组件中的第一列
- cluster-computing - Ceph 时钟偏差
- java - 从子类为私有属性赋值
- ajax - Asp.net 网络表单,jquery
- python - 我在下面发布的数据,我想将其上传到 django 模型并希望将 image_link 转换为我们的本地主机链接
- ruby-on-rails - 如何使用 2 种不同类型的用户在 Rails 中创建通知系统
- python - ImportError:无法从“颜色”导入名称“颜色”