Java 泛型问题-推断类型不符合声明的绑定

Java 泛型问题-推断类型不符合声明的绑定,java,generics,Java,Generics,我们目前有一个类不能用openjdk 6编译。以下缩短的类复制此错误: public class Copy implements ICopy { public <A,B extends List<A>,C extends Map<A,B>> A method(A a, B b) { A something = null; return something; } @Override

我们目前有一个类不能用openjdk 6编译。以下缩短的类复制此错误:

public class Copy implements ICopy {        
    public <A,B extends List<A>,C extends Map<A,B>> A method(A a, B b) {
        A something = null;
        return something;
    }

    @Override
    public <A,B extends List<A>> A method2(A a, B b) {
        return method(a,b);
    }    
}
它使用oracles java版本和openjdk 7进行编译,但使用openjdk 6失败,不幸的是,我们必须使用该版本来编译(原始)代码

错误消息是

Copy.java:15: invalid inferred types for C; inferred type does not conform to declared bound(s)
inferred: java.util.Map<A,B>
bound(s): java.util.Map<A,B>
                return method(a,b);
                             ^
Copy.java:15:C的推断类型无效;推断的类型不符合声明的绑定
推断:java.util.Map
绑定:java.util.Map
返回方法(a、b);
^

我需要的只是一些想法,如何更改
method2
的实现,以便它能够编译。我甚至不关心编译器警告…

我会尝试显式指定边界,如下所示:

return this.<A,B,Map<A,B>>method(a,b);
返回这个方法(a,b);

但是,更一般地说,我认为根本不需要类型参数
C
method
的参数或其返回类型根本没有引用
C
,因此,如果您可以更改
method
的签名,我将完全忽略该类型参数。

看起来像个bug。Eclipse编译器和Sun的编译器对此没有做任何说明。@GuillaumePolet-一个错误或对该java版本的泛型类型的过于严格的处理。而且,是的,eclipse没有抱怨(这使得复制这个导致构建失败的讨厌错误变得非常复杂)。啊,对不起,这是一个非常小的示例类,只关注错误。实际方法使用所有类型参数。
return this.<A,B,Map<A,B>>method(a,b);