我有一个类CommonDaoImpl
,它实现了CommonDao
接口(interface)。现在我尝试通过接口(interface) CommonDao
引用访问 CommonDaoImpl
的 getRegisterData()
,如下所示
public class CommonServiceImpl implements CommonService
{
CommonDao commonDao
public boolean insertRegisterData(CommonBean objCommonBean) {
return commonDao.getRegisterData(objCommonBean);
}
但它不起作用并抛出 NullPointerException
所以我稍微改变了我的代码并使用实现类 CommonDao impl 的构造函数初始化接口(interface)引用,如下所示
public class CommonServiceImpl implements CommonService
{
CommonDao commonDao=new CommonDaoImpl();
public boolean getRegisterData(CommonBean objCommonBean) {
return commonDao.insertRegisterData(objCommonBean);
}
但我不明白为什么会发生这种情况。
最佳答案
第一种情况
CommonDao commonDao
它是类的成员字段,未初始化,具有默认值 null
,因此在 null
上调用方法会导致 NullPointerException
在第二种情况下,您正在初始化它
CommonDao commonDao=new CommonDaoImpl();
关于java - 通过接口(interface)引用访问实现的类方法,无需构造函数初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295660/