java - Java 泛型 super

标签 java generics super

下面代码中的listNum.add(num)有什么问题; (引用-http://docs.oracle.com/javase/tutorial/java/generics/lowerBounded.html)

它给出的编译错误为 List 类型中的方法 add(capture#1-of ? super Long) 不适用于参数 (Number)

public class GenericSuper {

   List<? super Long> listNum = new LinkedList < Number >();
   List<? super ExportException> listExp= new LinkedList<RemoteException>();

   public List<? super ExportException> addList()
   {
      Number num = 10;
      listNum.add(num);
      RemoteException rme = new RemoteException();
      listExp.add(rme);
      return rme;
   }
}

最佳答案

listNum可能是 List<Long> 的一个实例并且您不能添加 NumberLong 的列表,因为它会抛出类转换异常。

解决方案:

  1. 制作listNum一个List<? super Number>
  2. 制作num一个Long

关于java - Java 泛型 super ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15924770/

相关文章:

java - LinkedHashMap 中的 "next"和 "after"条目有什么区别?

c# - 将通用参数约束到另一个通用接口(interface)时,是否存在诸如 "don' t care 之类的东西?

c# - C#泛型中Java通配符的等价物是什么

java - 使用 Mockito 调用验证 super.method()

android - 为什么要从android Activity生命周期方法中调用父类(super class)方法?

Java:单元测试图像操作

java - Debian 5.0 看不到 java 可执行文件

javascript - this._super() 与 this.super()

java - 泛型名称冲突

c#-4.0 - 忍者注入(inject) : Binding an interface with a generic that is also an interface