隨筆-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
          主站蜘蛛池模板: 温泉县| 承德市| 台南市| 仁化县| 寻乌县| 六枝特区| 玉山县| 彰武县| 扶绥县| 平安县| 馆陶县| 通榆县| 胶南市| 秭归县| 吉首市| 剑河县| 忻城县| 南澳县| 永康市| 二手房| 云安县| 桓台县| 商都县| 桦川县| 明星| 蒙山县| 沈阳市| 巫溪县| 南乐县| 武山县| 那坡县| 磐石市| 石棉县| 吴忠市| 林州市| 黑水县| 叙永县| 饶平县| 嘉义市| 石景山区| 勃利县|