最近我遇到了Java generics
的奇怪问题。我用下面的代码片段简化了问题:
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 :(得分:1)
在与此问题相关的Google搜索中,我遇到了sun
与此generics type inference
问题相关的错误。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954
因此,我们发现这在jdk 1.6.0_20
的更高版本中得到修复,因此它在jdk 1.6.0_26
认为值得分享。