请考虑以下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);
}
}
答案 0 :(得分:2)
如果您编写调用这些方法的代码,它将变得更加清晰。
例如:
OR
如您所见, select distinct a.name,a.id,a.icon,a.Agrippa from em a
inner join pref b on a.id = b.id
where a.name in ('Irish','jags')
and a.icon in ('app','net','res')
and a.Agrippa= 'mac'
and b.res = 'new'
and a.icon in ('site')
的输出可以分配给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>
可以分配被分配给所有三个。