<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