2

如果有人可以向我解释为什么以下代码中的 u = bar(u,r) 不起作用,我会非常感激。我只是找不到正确的解释。

class R {
}

class U {
}

public class Foo {

    public static <T> T bar(T x, T y) {
        return x;
    }

    public static void main(String[] args) {

        R r = new R();
        U u = new U();

        u = bar(u,r); // why is this not working?
    }
}

更新:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from Object to U
4

1 回答 1

7

在确定将哪种类型用于泛型类型T时,Java 会查看参数的类型。

在这种情况下,参数ur是不同的、不相关的类型(UR)。

因此,它们最接近的共同祖先是Object,因此返回类型将是Object,这需要一个转换才能分配给u

于 2013-05-20T20:28:18.673 回答