[POO] Sous-typage variance/contravariance dans Java
Bonjour,
J'aimerai connaître le comportement de votre compilateur java sur le programme suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
interface A {}
interface B {}
interface C extends A,B {}
interface Super1 {
public A get();
}
interface Super2 {
public B get();
}
public interface Child extends Super1, Super2 {
public C get();
} |
Chez moi eclipse 3.2.2 ne pose pas de problème, mais le jdk de sun (javac 1.6.0) me retourne l'erreur suivante:
Code:
1 2 3 4 5
|
Child.java:16: types Super2 and Super1 are incompatible; both define get(), but with unrelated return types
interface Child extends Super1, Super2 {
^
1 error |
Ce problème de sous-typage variant/contravariant ne devrait-il pas être définit dans la spécification de Java ?