4
내가 추론 입력 JDK8 감사에서 잘 컴파일 다음 코드를 실행하려고 해요 : CB가 [Ljava.lang 캐스트 할 수없는 :이 ClassCastException이 발생합니다 실행, 그러나JDK8 타입 추론 문제
public static <A,B> B convert(A a) {
return (B) new CB();
}
public static void main(String[] args) {
CA a = new CA();
CB b = convert(a); //this runs fine
List<CB> bl = Arrays.asList(b); //this also runs fine
List<CB> bl1 = Arrays.asList(convert(a)); //ClassCastException here
}
을 .Object,하지만 CB b = convert (a) 잘 작동합니다.
왜 그런가?
잠깐, 무엇이 변환하는 중입니까? 인수가 무시되므로 전달되는 내용은 중요하지 않습니다. – Carcigenicate
어떤 JRE 버전을 사용합니까? 나는 1.8.0_92의'java.lang.VerifyError : 잘못된 타입의 피연산자 스택'을 얻는다. Btw, 타입 증인을 사용하여 나를 위해 작동합니다 :'List bl1 = Arrays.asList (Test. convert (a));' –
@StefanZobel 실제로 작동하지만 약 150 사용법을 수동으로 변경하는 것은 쉽지 않습니다 - JDK8이 자동으로 추론을하기를 바랬다 –