<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    [Jakarta Commons筆記] Commons Collections - Closure組

    接下來看Closure組。

     

    Closure

    ChainedClosure

    IfClosure

    WhileClosure

    ClosureUtils

     

    Closure這一組接口和類提供一個操作對象的execute方法,為我們在處理一系列對象時可以將處理邏輯分離出來。理論上講,使用Transformer也可以達到類似的效果,只要輸出對象和輸入對象是同一個對象就好,但是Closure接口定義的execute方法返回void,并且從效果和功能區分上,Closure可以更好的詮釋對象處理或執行的意思。而事實上,ClosureUtils中也提供了一個asClosure方法包裝一個現成的Transformer

     

    沿用前面的Emploee類,我們來給一組員工漲工資:

     

    package sean.study.commons.collections;

     

    import java.util.Arrays;

    import java.util.Collection;

    import java.util.Date;

    import java.util.Iterator;

     

    import org.apache.commons.collections.Closure;

    import org.apache.commons.collections.CollectionUtils;

    import org.apache.commons.lang.StringUtils;

     

    public class ClosureUsage {

     

        public static void main(String[] args) {

            demoClosureUsage();

        }

       

        public static void demoClosureUsage() {

     

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

           

            // data setup

            Employee[] employees = new Employee[] {

                new Employee("Tony", 26, new Date(), "E4", 2000),

                new Employee("Michelle", 24, new Date(), "E4", 2000),

                new Employee("Jack", 28, new Date(), "E5", 3000)

            };

            Collection empColl = Arrays.asList(employees);

            printColl("Before salary increase:", empColl);

           

            // closure setup

            Closure salaryIncreaseClosure = new Closure() {

                public void execute(Object obj) {

                    Employee emp = (Employee) obj;

                    emp.setSalary(emp.getSalary() * 1.20);

                }

            };

           

            // salary increase

            CollectionUtils.forAllDo(empColl, salaryIncreaseClosure);

            printColl("After salary increase:", empColl);

     

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

        }

       

        public static void printColl(String label, Collection c) {

            if (StringUtils.isNotBlank(label)) {

                System.out.println(label);

            }

            Iterator iter = c.iterator();

            while (iter.hasNext()) {

                System.out.println(iter.next());

            }

        }

    }

     

    以下是運行結果:

     

    =========== demoClosureUsage ===========

    Before salary increase:

    Employee[name=Tony,age=26,dateJoined=2005-08-05,grade=E4,salary=2000.0]

    Employee[name=Michelle,age=24,dateJoined=2005-08-05,grade=E4,salary=2000.0]

    Employee[name=Jack,age=28,dateJoined=2005-08-05,grade=E5,salary=3000.0]

    After salary increase:

    Employee[name=Tony,age=26,dateJoined=2005-08-05,grade=E4,salary=2400.0]

    Employee[name=Michelle,age=24,dateJoined=2005-08-05,grade=E4,salary=2400.0]

    Employee[name=Jack,age=28,dateJoined=2005-08-05,grade=E5,salary=3600.0]

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

     

    我這里舉的是一個相對簡單的例子,在Closure這一組還有一些很方便的類,如ChainedClosure可以包裝一組Closure作為整體執行;IfClosure在創建時需要提供給它一個Predicate和兩個Closure,執行時先做Predicate判定再決定執行哪一個ClosureSwitchClosureSwitchTransformer類似,根據創建時傳入的Predicate組和Closure組對應執行;WhileClosure則根據創建時傳入的Predicate做判斷,如果為true則執行Closure,直到Predicate返回false;等等。

     

    具體用法請參考Javadoc

    posted on 2006-03-10 23:15 Vincent.Chen 閱讀(227) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲精品国产日韩无码AV永久免费网 | 免费看一区二区三区四区| 国产伦一区二区三区免费| 亚洲国产成人综合精品| 四虎免费在线观看| 亚洲成人免费电影| 亚洲ⅴ国产v天堂a无码二区| a级毛片免费播放| 亚洲精品成人av在线| 最近中文字幕完整免费视频ww| 亚洲视频在线观看视频| 131美女爱做免费毛片| 亚洲AV无码久久久久网站蜜桃| 免费无码AV一区二区| 最近2019中文字幕免费大全5| 2022年亚洲午夜一区二区福利| 国产在线jyzzjyzz免费麻豆| 精品国产日韩久久亚洲| 四虎在线播放免费永久视频| 一区二区三区免费视频网站| 亚洲AV无码成人精品区蜜桃| 精品国产污污免费网站aⅴ| 亚洲熟妇久久精品| 亚洲国产V高清在线观看| 中文字幕在线免费看线人| 亚洲黄色在线播放| 天天看免费高清影视| 一级毛片免费播放试看60分钟| 亚洲AV无码久久精品狠狠爱浪潮| 精品无码免费专区毛片| 国产精品亚洲精品日韩电影| 亚洲国产精品无码专区在线观看 | 亚洲精品美女视频| 国产在线98福利播放视频免费| 亚洲一级特黄特黄的大片| 午夜国产大片免费观看| a级毛片在线视频免费观看| 在线观看亚洲AV日韩AV| 久久综合亚洲色HEZYO国产| 国产一卡二卡四卡免费| 一级一级毛片免费播放|