2013-02-08 88 views
1

最近我遇到了一個關於Java generics的奇怪問題。我簡單的問題,下面的代碼片段:java泛型中的歧義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(); 
    } 

JDK 1.6.0_03和早期版本的情況下,我們都拿到臭名昭著的編譯錯誤

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.0_26及更高版本。

因爲我們的構建服務器仍在jdk 1.6的早期版本中運行,有沒有辦法擺脫早期版本jdk 1.6的這個問題?

+0

在Java 1.5下,此代碼正常工作並編譯正常。你確定,你沒有在早期版本下編譯錯誤嗎? – Andremoniy

+0

@Andremoniy正如我所提到的,只有當它是'1.6.0_0x'時我們纔會得到這個編譯錯誤。我沒有嘗試'1.5' – sundar

+1

如果它是編譯器中的一個錯誤,爲什麼你關心哪個版本用於運行時? – jarnbjo

回答