• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    AOP 的利器:ASM 3.0 介紹

    發布: 2008-6-23 16:59 | 作者: 不詳 | 來源: 測試時代編輯整理 | 查看: 131次 | 進入軟件測試論壇討論

    領測軟件測試網

    public class Generator{ public static void main() throws Exception { ClassReader cr = new ClassReader("Account"); ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); ClassAdapter classAdapter = new AddSecurityCheckClassAdapter(cw); cr.accept(classAdapter, ClassReader.SKIP_DEBUG); byte[] data = cw.toByteArray(); File file = new File("Account.class"); FileOutputStream fout = new FileOutputStream(file); fout.write(data); fout.close(); } }


     

    執行完這段程序后,我們會得到一個新的 Account.class 文件,如果我們使用下面代碼:

     

    public class Main {
    public static void main(String[] args) {
    Account account = new Account();
    account.operation();
    }
    }

    使用這個 Account,我們會得到下面的輸出:

    SecurityChecker.checkSecurity ...operation... 

    也就是說,在 Account 原來的 operation 內容執行之前,進行了 SecurityChecker.checkSecurity() 檢查。

    將動態生成類改造成原始類 Account 的子類

    上面給出的例子是直接改造 Account 類本身的,從此 Account 類的 operation 方法必須進行 checkSecurity 檢查。但事實上,我們有時仍希望保留原來的 Account 類,因此把生成類定義為原始類的子類是更符合 AOP 原則的做法。下面介紹如何將改造后的類定義為 Account 的子類 Account$EnhancedByASM。其中主要有兩項工作:

    • 改變 Class Description, 將其命名為 Account$EnhancedByASM,將其父類指定為 Account。
    • 改變構造函數,將其中對父類構造函數的調用轉換為對 Account 構造函數的調用。

    AddSecurityCheckClassAdapter 類中,將重寫 visit 方法:

    public void visit(final int version, final int access, final String name,

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>