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
的這個問題?
在Java 1.5下,此代碼正常工作並編譯正常。你確定,你沒有在早期版本下編譯錯誤嗎? – Andremoniy
@Andremoniy正如我所提到的,只有當它是'1.6.0_0x'時我們纔會得到這個編譯錯誤。我沒有嘗試'1.5' – sundar
如果它是編譯器中的一個錯誤,爲什麼你關心哪個版本用於運行時? – jarnbjo