下面代码中的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>
的一个实例并且您不能添加 Number
到 Long
的列表,因为它会抛出类转换异常。
解决方案:
- 制作
listNum
一个List<? super Number>
- 制作
num
一个Long
关于java - Java 泛型 super ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15924770/