隨筆-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 小米 閱讀(1342) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 和政县| 广宗县| 舟曲县| 石泉县| 陇川县| 湘西| 湖州市| 洪泽县| 仙居县| 绩溪县| 胶州市| 汕尾市| 犍为县| 黔江区| 牟定县| 临澧县| 东港市| 庄浪县| 屏山县| 蕉岭县| 西乌珠穆沁旗| 民县| 论坛| 绵阳市| 介休市| 清水县| 南汇区| 兴仁县| 大理市| 黔东| 广宗县| 三门县| 绥中县| 大连市| 新巴尔虎右旗| 霞浦县| 海盐县| 龙游县| 阿拉善左旗| 若尔盖县| 绥宁县|