奇怪问题:请问这个对象是什么?(附代码及运行结果)

来源:百度知道 编辑:UC知道 时间:2024/06/20 14:00:00
PbosDAOProxy daoProxy = DataAccessManager.getInstance().getPbosDao();
if(daoProxy == null)
{
System.out.println("daoProxy is null");
}
else
{
System.out.println("daoProxy is not null");
}

程序运行结果: daoProxy is not null

===========================================

修改一下代码
PbosDAOProxy daoProxy = DataAccessManager.getInstance().getPbosDao();
if(daoProxy == null || daoProxy.toString() == null)
{
System.out.println("daoProxy is null");
}
else
{
System.out.println("daoProxy is not null");
}

程序运行结果: daoProxy is null

由代码可见daoProxy对象toString()以后 == null,那么daoProxy对象是什么东西?
调用System.out.println(daoProxy);执行结果为 null
调用System.out.println(daoProxy.equals("null"));报错NullPointerException;

要看静态方法getInstance的方法体怎么写的咯~
你获取到的是null,说明getInstance返回的是null。也就是对象daoProxy是null。
对值为null的对象调用方法就会抛NullPointerException,所以daoProxy.toString()和daoProxy.equals()抛异常!

自己定义的一个 类文件,估计是个数据层。

注意看两次调试时是否是一个daoProxy对象,另外在代码中加上System.out.println(daoProxy);方便调试!