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

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

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

    最愛Java

    書山有路勤為徑,學海無涯苦作舟

    《AspectJ Cookbook》讀書筆記十六: 增強類和編譯器

            本章節說明了如何使用靜態橫切技術,以靜態方式使用AspectJ中的方面把行為和接口引入現有的類中。使用這些技術,可以擴展類來實現接口,從新的父類擴展類,引入新方法和屬性,減輕說發生異常的影響,以及繼承多個基類。
    一.擴展現有的類
    package com.aspectj;

    public aspect ExtendClassRecipe {
        
    private int MyClass.newVariable = 20;
        
        
    public int MyClass.bar(String name) 
            System.out.println(
    "In bar(String name) , name:" + name);
            
    return this.newVariable; 
        }

    }

     
            示例中將屬性newVariable和方法bar(String)添加到了MyClass類中。

    二.聲明類之間的繼承關系
        使用declare parents語句,指定特定的類是從另一個類擴展而來。
        以下代碼說明了如何為MyClass類指定新的繼承關系
    package com.aspectj;

    public aspect IntroduceInheritanceRecipe {
        declare parents:MyClass 
    extends AnotherClass;
    }

    三.使用方面實現接口
        使用declare parents語句,指定特定的類實現特定的接口。
    package com.aspectj;

    public aspect ImplementInterfaceRecipe {
        declare parents:MyClass 
    implements MyInterface;
    }
        把接口應用于現有類的能力允許通過接口類型的引用那個類的對象,如:
    //Create an instance of MyClass
    MyInterface myObject = new MyClass();
    //
    //Work with the interface reference
    myObject.foo(1,"Russ");

    四.聲明默認的接口實現
    package com.aspectj;

    public aspect DefaultInterfaceImplementationRecipe {
        declare parents:MyClass 
    implements MyInterface;

        
    //public void MyInterface.bar(String name) {
            
    //System.out.println("bar(String) called on " + this);
        
    //}
    }

    五.減輕異常的影響
        使用declare soft語句,可以指定一組應該減輕其影響的異常--也就是說,在通過特定連接點選擇的連接點上引發這些異常時,將其轉換成未捕獲的異常。
        示例中說明了減輕在void foo()方法上引發的ExcepionA異常的影響,使得該方法的用戶不必關心如何處理這個異常。
    package com.aspectj;

    public aspect SoftExceptionRecipe {
        pointcut callPointCut() : call(
    void MyClass.foo());
        declare soft : ExceptionA : callPointCut();
    }

    六.擴展編譯
    分別使用declare error或declare warning語句,指定應該引發編譯器錯誤或警告的條件。
    示例說明了如何聲明一個新的錯誤和警告,如果在正在編譯的應用程序內發現指定的條件,編譯器就會引發該錯誤或警告。
    package com.aspectj;

    public aspect CompilaionAdviceRecipe {
        declare error:call(
    void ProtectedAccessClass.setValue(int))  : "Must only set the ProtectedAccessClass.value from a MyClass object";
        
        declare warning:call(
    void ProtectedAccessClass.getValue()) :"Should only be reading ProtectedAccessClass.value from a MyClass object";
    }

    posted on 2008-08-27 09:31 Brian 閱讀(468) 評論(0)  編輯  收藏 所屬分類: 《AspectJ Cookbook》讀書筆記

    公告


    導航

    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 666精品国产精品亚洲 | 麻豆亚洲AV永久无码精品久久| 特级毛片在线大全免费播放| 日本免费观看网站| 亚洲成熟丰满熟妇高潮XXXXX| 全免费A级毛片免费看网站| 亚洲天然素人无码专区| 成人片黄网站色大片免费| 亚洲一区二区三区高清不卡| 最近免费中文字幕大全视频 | 成人片黄网站A毛片免费| 亚洲乱色伦图片区小说| 日韩人妻无码免费视频一区二区三区| 亚洲国产乱码最新视频| 日韩在线a视频免费播放| 国产成人精品亚洲一区| 亚洲综合区小说区激情区| 91福利免费网站在线观看| 国产亚洲精品无码成人| 久久成人a毛片免费观看网站| 亚洲经典在线观看| 免费精品人在线二线三线区别 | 一级一级毛片免费播放| 亚洲爆乳无码一区二区三区| 日韩免费无码视频一区二区三区 | 亚洲一卡二卡三卡| 麻豆国产精品入口免费观看| 国产亚洲精品美女久久久久久下载| 亚洲偷自拍拍综合网| 日韩免费的视频在线观看香蕉| 亚洲欧洲高清有无| 在线观看国产情趣免费视频 | 一级黄色免费毛片| 老司机亚洲精品影院| 国产午夜免费福利红片| 最新久久免费视频| 亚洲色大成WWW亚洲女子| 亚洲人成网77777亚洲色| 成全影视免费观看大全二| eeuss草民免费| 亚洲图片中文字幕|