空对象
时间:2010-07-17 来源:yourenyouyu2008
问:
关于返回值, null, 和空对象的处理?
当函数的返回值的签名为对象,函数的最终结果为空时,是该返回null还是一个空对象呢?
我的程序遇到一个这样的问题,在Builder类中有一个函数
public String buildA(List infoData), 当计算结构为空是该返回null还是""呢?
在Director其中组装产品时会重复调用这个函数,当返回null时,每次都要检查这个对象是否
为空,因为结果要添加到StringBuffer中, 当返回""时, 不需要检查是否为空,直接添加即可,
公司的高手是返回null,每次都检查,感觉这样做很烦琐。
答:
返回null这种习惯估计是从C/C++中带来的.
我的处理是除非在某些场合下null也有其意义的时候才返回null.
否则要么返回一个empty的对象,要么抛出一个异常.
public String buildA(List infoData)
这种情况返回""是恰当的也是符合逻辑的.
hibernate相关处理
使用了空对象模式,应用不需要进行null判断
load
WfcpErrsinfomy=session.load(WfcpErrsinfo.class,111);
my.getA();
load返回的是MyCla的代理类实例,当没有对应的主键时也不为null,而是个空的代理类,当调用任何方法时就抛出异常。
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [cn.ccb.wfcp.bo.brules.WfcpErrsinfo#1111]
createQuery.list
List list = session.createQuery("from WfcpErrsinfo bo where bo.reId=11111").list();
System.out.println(list.size());//
当没有记录时返回空的list ,list.size()==0.