如何比较两个有可能为null的实例

       以前在写程序的时候,碰到需要比较两个有可能为null的实例时,为了避免出现NullPointerException,经常用这样的一段代码来比较:

None.gif      Object obj1 = " abc " ;
None.gif     Object obj2
= " cde " ;
None.gif    
None.gif    
if ((obj1 == null && obj2 == null ) || (obj1 != null && obj1.equals(obj2))
ExpandedBlockStart.gifContractedBlock.gif        
|| (obj2 != null && obj2.equals(obj1))) dot.gif {
InBlock.gif       System.
out.println("equals");
ExpandedBlockEnd.gif     }

       这样的程序,读起来真是挺拗口。我一直没有想到什么好的方法解决这个问题,直到今天在看到JDK的AbstractList源码的equals方法的实现时,看到这一段:

None.gif          if ( ! (o1 == null ? o2 == null : o1.equals(o2)))
None.gif        
return false ;

       原来用三元运算符可以很好的解决这个问题,呵呵,我前面的程序可以改写成:

None.gif      Object obj1 = " abc " ;
None.gif     Object obj2
= " cde " ;
None.gif    
None.gif    
if (obj1 == null ? obj2 == null : obj1.equals(obj2))
None.gif       System.
out .println( " equals " );

       真是简洁多了! 05.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值