<X> X foo(List<? super X> list)
{
return null;
}
void test()
{
List<Number> list = ...;
String s1 = this.foo(list); // huh?
}
마지막 줄에는 아무런 의미가 없습니다. javac에서 어떻게 허용합니까?왜이 일반 코드가 컴파일됩니까?
이제 foo()
방법도 의미가 없습니다. null를 돌려 줄 필요가있어, 형태 보증 된 방식으로 돌려 줄 수가있는 값은 없습니다. 따라서 런타임의 마지막 줄에는 아무런 문제가 발생하지 않습니다. String 변수에 null을 할당합니다.
여전히 정적으로 왜 마지막 줄이 컴파일됩니까? (javac 1.6 u21 b06)
'형식 불일치 : 숫자에서 문자열로 변환 할 수 없습니다. '오류가 발생합니다. –
가 작동하지 않습니다. –
컴파일되지 않습니다. – GriffeyDog