Свободный 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()'

0 ответов

Другие вопросы по тегам