隨筆-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 小米 閱讀(1352) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 江孜县| 梧州市| 静安区| 泸水县| 驻马店市| 宜阳县| 荃湾区| 河池市| 安徽省| 东兴市| 环江| 田林县| 宜川县| 甘南县| 兴文县| 江口县| 霍邱县| 兴化市| 临城县| 义马市| 钟山县| 松阳县| 苏尼特左旗| 封开县| 肥西县| 泰兴市| 临潭县| 祁阳县| 嵊泗县| 长顺县| 广东省| 龙胜| 丰都县| 富锦市| 北碚区| 武强县| 荆门市| 奈曼旗| 阿拉善左旗| 安西县| 台州市|