小编Sam*_*per的帖子

Java 泛型:在这里使用通配符有什么好处?

Collections.fill方法具有以下标头:

public static <T> void fill(List<? super T> list, T obj)
Run Code Online (Sandbox Code Playgroud)

为什么需要通配符?下面的标题似乎也同样有效:

public static <T> void fill(List<T> list, T obj)
Run Code Online (Sandbox Code Playgroud)

我看不出为什么需要通配符;如下代码适用于第二个标头和第一个标头:

List<Number> nums = new ArrayList<>();
Integer i = 43;
fill(nums, i); //fill method written using second header
Run Code Online (Sandbox Code Playgroud)

我的问题是:第一个标头可以工作但第二个标头不能工作的具体调用是什么?fill如果没有这样的调用,为什么要包含通配符?在这种情况下,通配符不会使方法更简洁,也不会增加可读性(在我看来)。

java generics collections type-parameter bounded-wildcard

6
推荐指数
1
解决办法
384
查看次数