2016-05-21 5 views
1

Ich entscheide mich, autowired Feld in Unterklasse zu überschreiben. Wie kann ich diese Überschreibung durchführen? So etwas wie diesWie kann ich @Autowired Eigenschaft in Unterklasse überschreiben

class Superclass { 
    @Autowired 
    Test test; 

    public Test getTest() { 
     return test; 
    } 
} 

class Subclass extends Superclass { 
    @Autowired 
    Test2 test2; 

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

Mögliches Duplikat [? Gibt es eine Möglichkeit Klassenvariablen in Java außer Kraft zu setzen] (http://stackoverflow.com/questions/685300/is-there-a-way-over-klasse-variables-in-java) – Gary

Antwort

1

Dank von @dok Lösung außer Kraft setzen i unter dieser Art und Weise:

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

verstehen Wenn es richtig wollen Sie den Wert test2 auto gefüllt haben und die Methode test() diesen neuen Wert zu verwenden.

In Java gibt es keine Möglichkeit, eine Klassenvariable zu überschreiben. Wenn Sie jedoch ein geschütztes Feld verwenden, können Sie dessen Wert in der Unterklasse ändern. Aber in diesem Fall denke ich, es ist besser, die getTest() -Methode zu überschreiben, stattdessen test2 zurückzugeben.

Verwandte Themen