Следующий код прекрасно компилируется:
public class Test {
public static interface A<Y> {
public B<Y> foo();
}
public static interface B<Y> extends A<Y> {
public A<Y> bar();
}
private static class Impl
implements A, B
{
public B foo() {
return this;
}
public A bar() {
return null;
}
}
}
Но когда параметр generi c вводится в класс верхнего уровня Test, код больше не компилируется:
public class Test<X> {
public static interface A<Y> {
public B<Y> foo();
}
public static interface B<Y> extends A<Y> {
public A<Y> bar();
}
private static class Impl
implements A, B
{
public B foo() {
return this;
}
public A bar() {
return null;
}
}
}
я получаю ошибку:
Интерфейс A не может быть реализован более одного раза с разными аргументами: Test.A и Test.A
Что вызывает эту странную ошибку компиляции? Что можно сделать, чтобы это исправить?
Кстати, я использую eclipse и Java 1.8.0_144.
Спасибо за вашу помощь.