2016-05-21 9 views
1

サブクラスでautowiredフィールドをオーバーライドすることにしました。このオーバーライドはどうすればできますか?あなたはこの新しい値を使用するように)自動充填し、メソッドのテスト(TEST2値を持つようにしたい正しくこのサブクラスの@Autowiredプロパティをオーバーライドするには

class Superclass { 
    @Autowired 
    Test test; 

    public Test getTest() { 
     return test; 
    } 
} 

class Subclass extends Superclass { 
    @Autowired 
    Test2 test2; 

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

の可能性のある重複は(http://stackoverflow.com/questions/685300/in-a-way-to-override-class-variables-in-java) – Gary

答えて

1

おかげで、私はこの方法でフィールドを上書き:[?Javaでクラス変数を上書きする方法はあります]

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

よう 何かを理解していれば。

Javaでクラス変数をオーバーライドする方法はありません。少なくとも、保護されたフィールドを使用すると、サブクラスでその値を変更できるようになります。 しかし、この場合は、代わりにtest2を返すgetTest()メソッドをオーバーライドする方が良いと思います。 @dok溶液から

関連する問題