Java泛型1.6早期版本和更高版本中的歧义

时间:2013-02-08 07:56:17

标签: java generics jdk1.6

最近我遇到了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中运行?

1 个答案:

答案 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

中工作

认为值得分享。