У меня есть следующая структура:
public interface BarReturn {}
public interface FooReturn {}
public interface FooBarReturn extends FooReturn, BarReturn {}
public interface Foo {
FooReturn fooBar( );
}
public interface Bar {
BarReturn fooBar();
}
public interface FooBar extends Foo, Bar {
FooBarReturn fooBar();
}
Сбой Javac со следующим сообщением:
FooBar.java:2: types Bar and Foo are incompatible; both define fooBar(), but with unrelated return types
public interface FooBar extends Foo, Bar {
^
1 error
Однако Eclipse может скомпилировать его нормально, и, насколько я вижу, он должен скомпилироваться - метод fooBar () FooBar удовлетворяет контракту как метода Foo, так и метода fooBar () Бара с помощью ковариантных возвращений.
Это ошибка в компиляции Eclipse или в javac? Или есть способ убедить javac скомпилировать его? Для справки мои параметры javac выглядят так:
* * 1010