Да, у меня есть причина.Есть много классов, необходимо расширить базу с различными конкретными типами.Я хочу избежать изменения сигнатуры funciton в каждом классе, по возможности этого следует избегать.
Если у вас есть много классов, которым необходимо расширить класс Base<T>
, и у всех них есть doSomething
метод, вы, вероятно, должны поместить doSomething
в Base<T>
:
class Base<T> {
public void doSomething(T param) {} // or even make this abstract
}
И затем IDE, такие как IntelliJ IDEA, могут сгенерировать переопределенный метод для вас.Когда вы начинаете вводить имя метода, появляется следующее:
Вы нажимаете ввод, и тогда он будет сгенерирован для вас.
@Override
public void doSomething(String param) {
super.doSomething(param);
}
Я подозреваю, что вы можете копировать и вставлять реализацию doSomething
, потому что иначе, почему вы думаете, что раздражает изменение типа параметра для каждой реализации?
Если реализациив основном такие же, рассмотрите возможность использования метода doSomething
в Base<T>
, затем извлеките части, которые отличаются, в метод doSomethingImpl
, который будет переопределен производными классами.