Null和“”的区别,在实体类中使用
本来,这是个很小的问题,但是一直没有直视它,一次程序中终于出现了,让我折腾了好半天。
这样的,用fastreport做报表时候,开始程序可以正常显示,隔了一段时间后,突然出现了问题。直接报错,不能运行。当时,焦头烂额,开始一点一点的排查,先是排查web服务,发现有数据,继续排查。苦恼,然后测试注销绑定数据的部分代码,没有错误,很欣慰,从而找到了问题出现的根源,一下子想到了有数据出现错误,肯定是数据在处理上出现了异常。逐步排查,最终确定实体类对象中一个属性值为空null,给fast report报表赋值时,出现了异常(未实例化的对象引用)。还好,终于找到bug的源头了。
总结如下:
Null和“”一个是空值,一个是字符串,两者的区别显而易见,但是,使用实体类时往往不会给实体类的属性进行初始化,所以默认为null,但是用到赋值时可能字符串不能接收空值,所以类型匹配不上。悲剧就是这样上演的。
建议:以后使用实体类时尽量有初始值,或者在使用其属性时记得空值的判断。
本来,这是个很小的问题,但是一直没有直视它,一次程序中终于出现了,让我折腾了好半天。
这样的,用fastreport做报表时候,开始程序可以正常显示,隔了一段时间后,突然出现了问题。直接报错,不能运行。当时,焦头烂额,开始一点一点的排查,先是排查web服务,发现有数据,继续排查。苦恼,然后测试注销绑定数据的部分代码,没有错误,很欣慰,从而找到了问题出现的根源,一下子想到了有数据出现错误,肯定是数据在处理上出现了异常。逐步排查,最终确定实体类对象中一个属性值为空null,给fast report报表赋值时,出现了异常(未实例化的对象引用)。还好,终于找到bug的源头了。
总结如下:
Null和“”一个是空值,一个是字符串,两者的区别显而易见,但是,使用实体类时往往不会给实体类的属性进行初始化,所以默认为null,但是用到赋值时可能字符串不能接收空值,所以类型匹配不上。悲剧就是这样上演的。
建议:以后使用实体类时尽量有初始值,或者在使用其属性时记得空值的判断。