Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通配符类型匹配-Java_Java_Generics - Fatal编程技术网

通配符类型匹配-Java

通配符类型匹配-Java,java,generics,Java,Generics,为什么下面的代码不能编译 public static <T> void foo_test(List<? extends T> src, List<T> dest) { for (T o : src) { dest.add(o); } } public static void main(String [] args) { List<Number> numbers = new ArrayList<Number&

为什么下面的代码不能编译

public static <T> void foo_test(List<? extends T> src, List<T> dest) {
   for (T o : src) {
        dest.add(o);
   }
}

public static void main(String [] args) {
   List<Number> numbers = new ArrayList<Number>();
   List<Integer> integers = new ArrayList<Integer>();
   foo_test(numbers, integers);
}

您不应该也不能将数字列表添加到整数列表中;数字不能是整数。但是,您可以将整数列表添加到数字列表中,与您键入的内容相反

这将有助于:

foo_test(integers, numbers);
更详细地说,T在代码中被推断为整数,但数字不扩展整数,因此调用是编译器错误


切换到foo_testintegers,数字会使T推断为数字,整数会扩展数字,以便编译。

您不应该也不能将数字列表添加到整数列表中;数字不能是整数。但是,您可以将整数列表添加到数字列表中,与您键入的内容相反

这将有助于:

foo_test(integers, numbers);
更详细地说,T在代码中被推断为整数,但数字不扩展整数,因此调用是编译器错误

切换到foo_testintegers,数字使T推断为数字,整数扩展数字,因此编译。

您需要切换整数和数字。src列表必须是比dest更具体的类型。

您需要切换整数和数字。src列表必须是比dest更具体的类型。

因为Number不扩展Integer。因为Number不扩展Integer。