随笔-57  评论-202  文章-17  trackbacks-0
      以前在写程序的时候,碰到需要比较两个有可能为null的实例时,为了避免出现NullPointerException,经常用这样的一段代码来比较:

    Object obj1 = "abc";
    Object obj2 
= "cde";
    
    
if ((obj1 == null && obj2 == null|| (obj1 != null && obj1.equals(obj2)) 
        
|| (obj2 != null && obj2.equals(obj1))) {
      System.
out.println("equals");
    }

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

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

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

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

      真是简洁多了!
posted on 2005-05-25 17:00 小米 阅读(1333) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: