使用通配符我宣布下面给出其参数是Number
型的方法:在方法参数
public static void organizeData(java.util.List<? extends Number> c) {
//operation on the list
}
我能够通过任何非参数列表作为参数。那么使用通配符<? extends Number>
有什么意义?
List newList = new LinkedList<>();
ClassName.organizeData(newList);
为什么我从c
得到Object
类型的元素?而不是类型Number
?有没有办法只允许一个类型的子类型作为参数传递,而不是允许非参数化的参数呢?
你不能阻止。用户总是可以首先投射到原始类型,然后投射到任何需要的地方。泛型有其局限性,原始类型总是打破它们。 – 2014-10-08 13:35:13