Wir haben derzeit eine Klasse, die mit openjdk 6. Die folgende Kurz Klasse nicht kompiliert wird diesen Fehler reproduziert:Generics Ausgabe - gefolgert Typ entspricht nicht erklärt gebunden (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);
}
}
Die Schnittstelle ist einfach es zeigt nur, dass wir nicht die Unterschrift des method2
ändern können:
public interface ICopy {
public <A,B extends List<A>> A method2(A a, B b);
}
7 es kompiliert mit Orakeln Java-Versionen und openjdk - aber nicht mit openjdk 6, und, leider, das ist die Version, die wir haben um den (ursprünglichen) Code zu kompilieren.
Die Fehlermeldung ist
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);
^
Alles, was ich brauche, sind einige Ideen, wie die Umsetzung des method2
zu ändern, so dass es kompilieren würde. Ich würde über Compiler-Warnungen nicht einmal egal ...
sieht aus wie ein Fehler. Der Eclipse-Compiler und der Sun-Compiler sagen dazu nichts. –
@GuillaumePolet - ein Bug oder eine zu strenge Handhabung von generischen Typen dieser Java-Version. Und, ja, Eclipse beschweren sich nicht (was es ziemlich kompliziert machte, diesen ekligen Fehler zu reproduzieren, der den Build tötet). –