Свободный API с несколькими общими параметрами и наследованием
Я пытаюсь реализовать свободный API, который содержит специализированные производные классы, и я использую Derived extends Base<Derived>
способ получения this
параметр как Derived
из базовых методов, но, похоже, он не работает с несколькими общими параметрами, например:
public class Specialized<T> extends Base<Specialized<T>, Iterable<T>> {
void someAMethod() {
}
}
public class Base<ThisType extends Base<ThisType, T>, T> {
public ThisType baseMethod() {
return getMe();
}
@SuppressWarnings("unchecked")
public ThisType getMe() {
return (ThisType) this;
}
}
И позже используйте это как:
new Specialized().baseMethod()
.someAMethod();
Но baseMethod()
не возвращает Specialized
объект, поэтому я получаю эту ошибку:
Не удается разрешить метод 'someAMethod()'