java - 整数扩展数字

标签 java collections

现在,在这段代码中,我显然可以将列表迭代为 IntegersDouble都是从Number扩展父类(super class)按预期完美运行:

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 的父类(super class),

我了解PECS概念(生产者扩展消费者 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);

}

正如预期的那样,我在这里遇到了错误,那么如何以正确的方式执行此操作,以便我能够在集合中添加我想要的任何类型?

最佳答案

一个List<? super Number>表示 Number 列表,或继承树中 Number 之上的类型。所以

  • List<Number>符合条件:您可以将任何类型的数字添加到 List<Number>
  • List<Serializable>符合条件:您可以将任何类型的数字添加到 List<Serializable>
  • List<Object>符合条件:您可以将任何类型的数字添加到 List<Object>
  • List<Integer>不符合条件:您不得将任何类型的数字添加到 List<Integer>

关于java - 整数扩展数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936890/

相关文章:

java - 如何将可下载文件放入 HttpServletResponse?

java - 帮助我了解 title.compareTo(a.title()); 的幕后花絮内码

java - 添加到数组对象更改相同的值java

java - 如何配置 Velocity 模板引擎以避免在合并结果中自动回车?

java - Google Cloud Endpoints 自定义异常

python - 如何在不弹出的情况下查看双端队列的前面?

string - 如何在 Scala 中分割给定位置列表的字符串

java - Java 中按原语或装箱类进行 foreach 循环

java - 尝试使用 JOGL Swing 测试代码时未找到 JVMUtil 类

java - 处理来自 @Service 类的 JSP 页面异常