目前我们有一个类,不会的OpenJDK 6编译下面缩短类重现此错误:泛型问题 - 推断类型不符合申报的约束(S)
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);
}
}
界面简单,它只是表明,我们不能改变method2
的签名:
public interface ICopy {
public <A,B extends List<A>> A method2(A a, B b);
}
它编译与神谕的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);
^
所有我需要的是一些想法如何改变method2
实施,以便它编译。我甚至不会在意编译器警告......
看起来像一个错误。 Eclipse编译器和Sun的编译器对此没有任何说明。 – 2012-04-03 15:54:30
@GuillaumePolet - 对该Java版本的泛型类型的错误或过于严格的处理。而且,是的,日食不会抱怨(这使得再现这个令人讨厌的错误造成构建非常复杂)。 – 2012-04-03 16:04:02