java泛型边界错误编译与jdk1.7的接口,但不是jdk1.6

时间:2012-04-17 15:47:38

标签: java generics java-7

以下Java接口在Oracle jdk1.6.0_31和Eclipse 3.7.2中编译,但不在jdk1.7.0_03中编译:

public interface Foo<
   A extends Foo<A, B>,
   B extends Foo<B, ?>
 > {}

(仅在明确时尝试换行)

我尝试编译:

[mth@lim tmp]$ /usr/java/jdk1.6.0_31-i586/bin/javac Foo.java 
[mth@lim tmp]$ /usr/java/jdk1.7.0_03-i586/bin/javac Foo.java 
Foo.java:3: error: type argument B is not within bounds of type-variable A
   B extends Foo<B, ?> 
                 ^
  where B,A are type-variables:
    B extends Foo<B,?> declared in interface Foo
    A extends Foo<A,B> declared in interface Foo
1 error

这是故意改变行为还是错误?

为了提供一些上下文,在我的代码中实现它的类是例如FirstFoo<FirstFoo, SecondFoo> SecondFoo SecondFoo<SecondFoo, ThirdFoo> FinalFoo<FinalFoo, FinalFoo>。在某些时候,链条会以{{1}}停止。因此,每个实现都有自己的类型作为第一个类型参数(类似于枚举)和第二个相关类型。

0 个答案:

没有答案