繁体   English   中英

Java中覆盖抽象类属性的结果为null

[英]Abstract class property overriding in java results in null

我在这里遇到一个我无法理解的非常具体的Java Spring问题。 我创建了一个抽象类fe:

public abstract class AbstractCrudServiceImpl{

    private GenericDAO baseDao;

    public GenericDAO getBaseDao() {
     return baseDao;
    } 
}

通用Dao是一个接口。 我想在抽象类中使用getter(和setter),因此实现起来非常简单明了。 [如果不是atm没关系]。

然后执行它,例如:

public class AgentServiceImpl extends AbstractCrudServiceImpl{

    @Autowired
    private AgentDao baseDao;
}

使用超类的getter来运行所有方法。

我的意图是产生类似使用XML的效果:

<bean id="AbstractCrudServiceImpl" class="..." abstract="true" />

<bean id="AgentServiceImpl" parent="AbstractCrudServiceImpl">
    <property name="baseDao" ref="agentDao"/>
</bean>

令我惊讶的是,我遇到一个错误:

java.lang.NullPointerException
 com.insurance.central.services.impl.AbstractCrudServiceImpl.read(AbstractCrudServiceImpl.java:36)

这基本上意味着该属性未正确设置,因为它的值仍为null。 为什么!?

我应该如何纠正。

谢谢。

Spring在AgentServiceImpl中正确设置了字段baseDao。 父类AbstractCrudServiceImpl中的baseDao字段保持为空。 在Java中,您可以覆盖方法,而不是成员变量。 尝试使用AgentServiceImpl.baseDao与AgentServiceImpl.super.baseDao。

我对Spring不太了解,所以我无法与注解或其他任何内容交流,但是您的原始属性是private ,因此您无法覆盖它。 尝试将两者都更改为protected

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM