隨筆-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
          主站蜘蛛池模板: 天柱县| 义乌市| 望江县| 泰州市| 泸溪县| 永胜县| 广州市| 南靖县| 科尔| 吉水县| 沙雅县| 长寿区| 米脂县| 乌兰浩特市| 加查县| 佛山市| 龙里县| 定州市| 泾源县| 延安市| 穆棱市| 保康县| 云梦县| 平邑县| 独山县| 呈贡县| 眉山市| 灵武市| 楚雄市| 乐至县| 桑植县| 安仁县| 阿城市| 台山市| 祁门县| 海晏县| 普陀区| 宣汉县| 梅河口市| 西畴县| 雷山县|