<X> X foo(List<? super X> list)
{
return null;
}
void test()
{
List<Number> list = ...;
String s1 = this.foo(list); // huh?
}
最后一行没有任何意义,javac如何允许它?为什么这个通用代码编译?
现在,foo()
方法也没有意义;它必须返回null,没有其他值可以以类型安全的方式返回。因此,运行时的最后一行不会导致任何问题:它将一个null分配给一个String变量。
静态地说,为什么最后一行会被编译? (javac 1.6 u21 b06)
我得到`类型不匹配:无法从数字转换为字符串`错误。 – 2011-02-22 20:07:44
对我不起作用 – 2011-02-22 20:08:40
它不能编译。 – GriffeyDog 2011-02-22 20:11:10