【发布时间】:2015-12-08 17:26:08
【问题描述】:
我正在尝试创建一个通用方法,它接受以下格式的数字列表。我知道我应该能够将任何类添加到列表“o”中,该列表至少是一个数字(浮点数、整数、双精度数)但我也应该能够添加任何对象,因为所有类都从对象扩展。换句话说,对象是任何类的超类。所以我想知道,为什么我会在 o.add(p); 行出现错误。 ?
public int checkType(List<? super Number> o)
{
Object p = new Object();
//error
o.add(p);
return - 1;
}
我遵循了Difference between <? super T> and <? extends T> in Java 对泛型的解释,这是公认的答案。
【问题讨论】:
-
错误信息是什么?
-
@kocko 这个问题不是重复的
-
@Ferdinand Nema 见上文
-
我认为应该是
List<? extends Number> o作为参数。因此它适用于任何扩展 Number 的对象,例如那些原生包装对象。 -
@kocko 看我的解释