• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      [Jakarta Commons筆記] Commons Collections -Predicate組

       moonboat 2008-11-12

      接下來看Predicate

       

      Predicate

      AndPredicate

      OrPredicate

      AllPredicate

      OnePredicate

      NonePredicate

      PredicateUtils

       

      PredicateCommons Collections中定義的一個接口,可以在org.apache.commons.collections包中找到。其中定義的方法簽名如下:

       

      public boolean evaluate(Object object)

       

      它以一個Object對象為參數,處理后返回一個boolean值,檢驗某個對象是否滿足某個條件。其實這個Predicate以及上一篇筆記提到的Comparator還有我們即將看到的TransformerClosure等都有些類似C/C++中的函數指針,它們都只是提供簡單而明確定義的函數功能而已。

       

      跟其他組類似,Commons Collections也提供了一組定義好的Predicate類供我們使用,這些類都放在org.apache.commons.collections.functors包中。當然,我們也可以自定義Predicate,只要實現這個Predicate接口即可。在Commons Collections中我們也可以很方便使用的一組預定義復合Predicate,我們提供2個或不定數量個Predicate,然后交給它,它可以幫我們處理額外的邏輯,如AndPredicate處理兩個Predicate,只有當兩者都返回true它才返回trueAnyPredicate處理多個Predicate,當其中一個滿足就返回true,等等。

       

      看看具體的代碼中如何使用這些Predicate吧:

       

      package sean.study.commons.collections;

       

      import org.apache.commons.collections.Predicate;

      import org.apache.commons.collections.PredicateUtils;

      import org.apache.commons.collections.functors.InstanceofPredicate;

      import org.apache.commons.collections.functors.NotNullPredicate;

      import org.apache.commons.lang.BooleanUtils;

      import org.apache.commons.lang.StringUtils;

       

      public class PredicateUsage {

       

          public static void main(String[] args) {

              demoPredicates();

          }

         

          public static void demoPredicates() {

              System.out.println(StringUtils.center(" demoPredicates ", 40, "="));

              Predicate p1 = new InstanceofPredicate(String.class);

              Predicate p2 = NotNullPredicate.getInstance();

              Predicate p3 = new Predicate() {

                  public boolean evaluate(Object obj) {

                      String str = (String) obj;

                      return StringUtils.isAlphanumeric(str)

                          && str.length() >= 6

                          && str.length() <= 10;

                  }

              };

              Predicate p4 = PredicateUtils.allPredicate(new Predicate[]{p1, p2, p3});                String input = "ABCD1234";

              Object[] raw = new Object[] {

                  "Is '",

                  input,

                  "' a valid input? ",

                  BooleanUtils.toStringYesNo(p4.evaluate(input)),

                  "."

              };

              System.out.println(StringUtils.join(raw));

              System.out.println(StringUtils.repeat("=", 40));

          }

       

      }

       

      輸出結果如下:

       

      ============ demoPredicates ============

      Is 'ABCD1234' a valid input? yes.

      ========================================

       

      這里面我首先定義了3個簡單的Predicatep1判斷對象是否為String的實例,p2判斷是否對象為nullp3是自定義的,判斷是否為數字字母的組合,并且長度在6~10字符。然后我用AllPredicate將它們組合到一起,成為p4,當p1p2p3都滿足時,p4evaluate方法才返回true。利用Predicate我們可以把判斷truefalse的邏輯從特定的業務代碼分離出來,以后我們重用也好,重新組裝也好,都是很方便的。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 国精品无码一区二区三区在线蜜臀| A级国产乱理伦片在线播放| 在线播放免费人成毛片| 国产欧美日韩一区二区三区| 亚洲成人av综合一区| 一个人免费观看WWW在线视频| 在线a级毛片无码免费真人| 熟女系列丰满熟妇AV| 欧美老熟妇XB水多毛多| 国产精品自在拍首页视频8 | 国产不卡一区二区四区| 国产成AV人片在线观看天堂无码| 97人妻碰碰视频免费上线| 人妻系列无码专区免费| 天天在线看无码AV片| 日韩大片高清播放器大全| 国产成人精品999在线观看| 亚洲综合无码明星蕉在线视频| 久久精品人妻中文系列葵司| 艳女性享受在线观看| 国产精品一区二区中文| 嫩草院一区二区乱码| 成年女人片免费视频播放A| 99久久99久久精品国产片| 国产在线午夜不卡精品影院| 国产精品情侣呻吟对白视频 | 波多野结衣中文字幕久久| 综合色一色综合久久网| 国内精品国产成人国产三级| 韩国午夜理论在线观看| 中文字幕日韩精品有码| 亚洲乱码在线卡一卡二卡新区| 国产成AV人片久青草影院| 亚洲av永久无码精品网站| 欧美成人看片黄A免费看| 欧美成人午夜在线观看视频| 丰满人妻一区二区三区视频53| 国产精品美脚玉足脚交欧美| 午夜大片免费男女爽爽影院| 无码中文人妻视频2019| 老司机亚洲精品影院|