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
如果没有这样的调用,为什么要包含通配符?在这种情况下,通配符不会使方法更简洁,也不会增加可读性(在我看来)。