Код: Выделить всё
abstract class A{
@Autowired
Client client;
protected void doSomething(){
/* ....some code .... */
client.someStuff();
/* ....some code .... */
}
/* ..... few abstract methods ......... */
}
class B extends A{
public void action(){ doSomething() }
}
class C extends A{
public void action(){ doSomething() }
}
Код: Выделить всё
Поэтому, когда я пытаюсь запустить этот код, он выдает мне исключение для ссылки на клиента. Я не думаю, что смогу использовать @Qualifier, потому что @Qualifier требует указать имя компонента из .xml в качестве параметра, но поскольку атрибут «клиент» является общим, я не могу использовать только одно имя компонента.
Кто-нибудь может помочь объяснить, есть ли способ обойти это место. Дублирование метода doSomething() сводит на нет всю цель наследования и приведет к дублированию кода в разных классах. Я не могу использовать атрибут client в подклассах, так как он станет неизвестен методу doSomething() во время компиляции.
Любые идеи /suggestions/solutions будут полезны.
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/241 ... nheritance
Мобильная версия