gpt4 book ai didi

java - 为什么 `test2()` 方法编译成功,但 `test1()` 方法编译失败?

转载 作者:行者123 更新时间:2023-11-30 01:58:35 24 4
gpt4 key购买 nike

请考虑下面的Test Java 类。

为什么test2()方法可以编译成功,而test1()却不能?

import java.util.Arrays;
import java.util.List;

public class Test {

public <N extends Number> List<N> test1(){
//compile error: Type mismatch: cannot convert from List<Integer> to List<N>
return Arrays.asList(1,2,3);
}

public List<? extends Number> test2(){
//no compile error
return Arrays.asList(1,2,3);
}

}

最佳答案

如果您编写调用这些方法的代码,就会变得更清楚。

例如:

public static void main (String args) {
Test obj = new Test();
List<Double> list1 = obj.test1 ();
List<? extends Number> list2 = obj.test2 ();
}

如您所见,test1()的输出可以分配给List<Double> ,这意味着它无法返回 List<Integer> .

另一方面,test2()的输出只能分配给List<? extends Number>List<? extends Object>List<?> ,以及 List<Integer>可以分配给所有三个。

关于java - 为什么 `test2()` 方法编译成功,但 `test1()` 方法编译失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53614827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com