У меня есть такой случай, когда я расширяюсь от суперкласса с методами, набираемыми с использованием Generics следующим образом:
Модели
abstract class SuperClass {
//.....
}
class SubClass extends SuperClass {
int a;
int b;
String c;
//....
}
Контроллеры
abstract class A {
T getDoc<T extends SuperClass>(T doc);
}
class B extends A {
T getDoc<T extends SubClass>(T doc) { //<================ Error
//....
}
}
В основном класс B
будет работать только с моделью SubClass
и любым классом, который ее расширяет. Расширение SuperClass
недостаточно. Это способ обеспечить использование типа. Я мог бы добавить вспомогательную функцию, которая будет проверять тип для каждого метода в классе B
(doc is SubClass
), но выглядит как многократное повторение.
Но приведенная выше архитектура дает сбой при переопределении метода getDoc
в класс B говорит, что это недопустимое переопределение, хотя SubClass
является SuperClass
. Как я могу достичь чего-то подобного? Или есть лучший способ сделать это? Цени любые указатели:)