2013-02-08 3 views
1

최근에 Java generics과 관련하여 이상한 문제가 발생했습니다. 이 코드는 JDK 1.6.0_26 및 이후 버전에서 완벽하게 작동하는 반면 JDK 1.6.0_03 및 이전 버전의 경우Java generics의 모호성 1.6 이전 버전

public static void main(String[] args) { 
     String s = "Hello"; 
     System.out.println(blindlyReturnGetObject()); 
    } 

    private static <T> T getObject() { 
     return (T) new Object(); 
    } 

    private static <T> T blindlyReturnGetObject() { 
     return getObject(); 
    } 

, 우리가지고 있었다 악명 컴파일 오류

type parameters of <T>T cannot be determined; no unique maximal instance exists for type variable T with upper bounds T,java.lang.Object 

: 나는 아래의 코드 조각으로 문제를 단순화.

빌드 서버가 jdk 1.6의 이전 버전에서 계속 실행되고 있기 때문에 이전 버전 jdk 1.6에 대해이 문제를 제거 할 수 있습니까?

+0

Java 1.5에서이 코드는 작동하고 잘 컴파일됩니다. 이전 버전에서 컴파일 작업을 실수로하지 않았습니까? – Andremoniy

+0

@Andremoniy 앞에서 언급했듯이 '1.6.0_0x' 인 경우에만이 컴파일 오류가 발생합니다. 나는'1.5'로 시도하지 않았다. – sundar

+1

컴파일러의 버그 인 경우 런타임에 어떤 버전이 사용되는지 신경 쓰는 이유는 무엇입니까? – jarnbjo

답변

1

이 문제와 관련된 인터넷 검색 중에이 generics type inference 문제와 관련된 sun에서 제기 된 버그가 발견되었습니다. 그 가치 공유를 생각 그래서이 발견

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954

jdk 1.6.0_20의 이후 버전에서 수정 될 따라서는

jdk 1.6.0_26에서 일하고 있었다.