【发布时间】:2014-01-05 17:40:53
【问题描述】:
现在在这段代码中,我显然可以遍历列表,因为 Integers 和 Double 都是从 Number 扩展的 超类按预期完美运行:
public static void viewList(List<? extends Number> num) {
for (Number num1 : num) {
System.out.println(num1);
}
}
public static void main(String[] args) {
List<Integer> arl = new ArrayList<Integer>();
viewList(arl);
}
但是在这里将数据添加到集合中将永远无法工作,因为 Integer 和 Double 不是 Number 和的超类
我了解 PECS 概念(Producer Extends Consumer Super)
public static void addList(List<? super Number> num) {
num.add(1);
num.add(2);
num.add(3);
}
public static void main(String[] args) {
List<Integer> arl = new ArrayList<Integer>();
addList(arl);
}
正如预期的那样,我在这里遇到了一个错误,那么如何以正确的方式进行操作所以我将能够在集合中添加我想要的任何类型?
【问题讨论】:
-
你为每个你想要的
Number子类型重载方法。 -
是的,这就是我已经做过的,但是有没有更有效的更少编码的方法?
标签: java collections