У меня есть следующая модель для создания контроллеров в моем приложении. Очевидно, что полная модель более сложна, но я остановлюсь на единственной части, которая вызывает у меня проблемы:
public abstract AbstractController<T> {
abstract protected Class<T> getType();
}
public ParentController extends AbstractController<Parent> {
@Override
protected Class<Parent> getType() {
return Parent.class;
}
}
Теперь я хотел бы расширить родительский объект и иметь контроллер для сына, это выглядело бы так:
public SonController extends ParentController {
@Override
protected Class<Son> getType() {
return Son.class;
}
}
Проблема в том, что метод getType () показывает несовместимость при компиляции (ожидает класс Parent).
Я пытался поиграть с дженериками, но не могу найти решение. Метод getType используется в нескольких методах от абстрактного контроллера, и я действительно хотел бы избежать их переопределения.
Любые идеи приветствуются.