Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在子类中重写@Autowired属性_Java_Spring_Design Patterns - Fatal编程技术网

Java 如何在子类中重写@Autowired属性

Java 如何在子类中重写@Autowired属性,java,spring,design-patterns,Java,Spring,Design Patterns,我决定重写子类中的自动连接字段。我怎样做这个覆盖? 像这样的 class Superclass { @Autowired Test test; public Test getTest() { return test; } } class Subclass extends Superclass { @Autowired Test2 test2; public Subclass() { super().te

我决定重写子类中的自动连接字段。我怎样做这个覆盖? 像这样的

class Superclass {
    @Autowired
    Test test;

    public Test getTest() {
        return test;
    }
}

class Subclass extends Superclass {
    @Autowired
    Test2 test2;

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

如果理解正确,则希望自动填充值test2,并使用方法test来使用此新值

java中没有办法重写类变量,至少使用受保护的字段将允许您在子类中修改它的值。
但在这种情况下,我认为最好重写getTest方法,以返回test2。

感谢@dok solution,我用这种方式重写字段:

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);
    }

}

可能的重复肯定不是那个问题的重复。