下面的代码使用JDK6编译(我尝试了1.6.0_24)
class XY<A extends XY<A, B>, B extends XY<B, A>> { } 但是在JDK7 (例如1.7.0)下编译,我得到了以下错误:
XY.java:1: error: type argument B is not within bounds of type-variable A
class XY<A extends XY<A, B>, B extends XY<B, A>> {
^
where B,A are type-variables:
B extends XY<B,A> declared in class XY
A extends XY<A,B> declared in class XY
1 error有人能指出这是否是有意改变Java的泛型吗?
发布于 2012-04-02 17:22:24
这似乎是一个来自OpenJDK的bug,是由类型变量替换中的错误引起的。
当您切换示例的泛型变量时,会出现如下情况:
class XY<A extends XY<A, B>, B extends XY<B, A>> { }
class XY<A extends XY<B, A>, B extends XY<A, B>> { } 它不会出现在以下内容中:
class XY<A extends XY<A, B>, B extends XY<A, B>> { }
class XY<A extends XY<B, A>, B extends XY<B, A>> { } 您可以在这里看到另一个例子:http://old.nabble.com/Apparent-generics-compilation-bug-new-to-Java-1.7-td33378164.html
https://stackoverflow.com/questions/9977760
复制相似问题