Я имею дело с устаревшим кодом, пытаюсь реорганизовать и извлечь общий код.Я закончил со следующей иерархией.
public interface MyInterface<T extends MyBaseClass> {...}
public class MyBaseClass {...}
public class MyClass extends MyBaseClass implements MyOtherInterface<MyClass> {...}
public interface MyOtherInterface<T extends MyOtherInterface<T>> {
void func(MyInterface<T> context); // Complains that T should extend MyBaseClass
}
Словом, я хочу указать, что параметр T, передаваемый в MyOtherInterface, должен быть классом, который расширяет MyBaseClass и реализует MyOtherInterface.Примерно так:
public interface MyOtherInterface<T extends MyOtherInterface<T extends MyBaseClass>>
Как мне это сделать?Я пытаюсь изменить как можно меньше.Я не уверен, что вышеупомянутое возможно, и мне, возможно, придется фактически перевернуть иерархию.