2016-05-21 3 views
1

Я решаю переопределить автоподвешенное поле в подклассе. Как я могу это сделать? Что-то вроде этогоКак я могу переопределить свойство @Autowired в подклассе

class Superclass { 
    @Autowired 
    Test test; 

    public Test getTest() { 
     return test; 
    } 
} 

class Subclass extends Superclass { 
    @Autowired 
    Test2 test2; 

    public Subclass() { 
     super().test=test2; 
    } 
} 
+1

Возможный дубликат [? Есть ли способ, чтобы переопределить переменные класса в Java] (http://stackoverflow.com/questions/685300/есть-A-путь к переопределяют-класс-переменные-в-Java) – Gary

ответ

1

спасибо от @dok решения я переопределить поле, таким образом:

class Superclass { 
    private Test test; 

    @Autowired 
    public Test getTest(Test test) { 
     return this.test = test; 
    } 
} 

class Subclass extends Superclass { 
    @Override 
    @Autowired 
    public Test getTest(Test2 test2) { 
     return super.getTest(test2); 
    } 

} 
1

Если правильно понял вы хотите иметь значение test2 авто заполненного и метод испытания(), чтобы использовать это новое значение.

В java нельзя переопределить переменную класса, по крайней мере, используя защищенное поле, вы сможете изменить его значение в подклассе. Но в этом случае я считаю, что лучше переопределить метод getTest(), чтобы вернуть test2.

Смежные вопросы