gpt4 book ai didi

java - java 中抽象类属性重写导致 null

转载 作者:太空宇宙 更新时间:2023-11-04 07:19:52 25 4
gpt4 key购买 nike

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

public abstract class AbstractCrudServiceImpl{

private GenericDAO baseDao;

public GenericDAO getBaseDao() {
return baseDao;
}
}

通用 Dao 是一个接口(interface)。我希望在抽象类中包含 getter(和 setter),这样实现就会相当简单明了。 [如果不是 atm 也没关系]。

然后有它的实现,例如:

public class AgentServiceImpl extends AbstractCrudServiceImpl{

@Autowired
private AgentDao baseDao;
}

使用父类(super class)的 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)

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

我应该如何纠正它。

谢谢。

最佳答案

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

关于java - java 中抽象类属性重写导致 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19483348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com