目前我們有一個類,不會的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