成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何利用javassist 動(dòng)態(tài)生成代碼

JellyBool / 1136人閱讀

摘要:動(dòng)態(tài)生成代碼涉及到了字節(jié)碼操作,通常動(dòng)態(tài)性兩種常用的實(shí)現(xiàn)方式,字節(jié)碼操作,反射。動(dòng)態(tài)改變某個(gè)類的結(jié)構(gòu)。

java動(dòng)態(tài)生成代碼涉及到了字節(jié)碼操作,通常 java 動(dòng)態(tài)性兩種常用的實(shí)現(xiàn)方式
1,字節(jié)碼操作
2,反射。
運(yùn)行時(shí)操作字節(jié)碼可以實(shí)現(xiàn)如下功能
1,動(dòng)態(tài)生成新的類。
2, 動(dòng)態(tài)改變某個(gè)類的結(jié)構(gòu)。

字節(jié)碼操作 通常比反射開(kāi)銷小,性能高。
下面就是利用 javassist 動(dòng)態(tài)生成的一個(gè).class 文件

    public static void main(String[] args) throws CannotCompileException, IOException, NotFoundException {
        ClassPool pool = ClassPool.getDefault();
        CtClass ct 
            = pool.makeClass("com.test.bean.Emp");
        //創(chuàng)建屬性
        CtField e1 
           = CtField.make("public int no;",ct);
        CtField e2 
           = CtField.make("public String name;",ct);
        ct.addField(e1);
        ct.addField(e2);
        CtMethod m1 = CtMethod.make("public int getNo(){return no;}", ct);
        CtMethod m2 = CtMethod.make("public void setNo(int no){return this.no = no;}", ct);
        ct.addMethod(m1);
        ct.addMethod(m2);
        //添加構(gòu)造器
        CtConstructor  constructor 
           = new CtConstructor(
           new CtClass[]{CtClass.intType,pool.get("java.lang.String")},ct);//構(gòu)造器的參數(shù) 
           constructor.setBody("{this.no = no; this.name=name;}");//構(gòu)造器的方法體
        ct.addConstructor(constructor);//如果不添加構(gòu)造器 則會(huì)生成一個(gè)空的構(gòu)造器
        ct.writeFile("E:/JavaFile");//將構(gòu)造好的類寫(xiě)出來(lái)
        System.out.println("類生成功");
        
    }

代碼生成之后必須使用xjad等反編譯工具進(jìn)行查看

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64876.html

相關(guān)文章

  • Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)字節(jié)碼操作-Javassist介紹)

    摘要:知識(shí)點(diǎn)總結(jié)動(dòng)態(tài)字節(jié)碼操作介紹知識(shí)點(diǎn)總結(jié)動(dòng)態(tài)字節(jié)碼操作運(yùn)行時(shí)操作字節(jié)碼可以讓我們實(shí)現(xiàn)如下功能動(dòng)態(tài)生成新的類動(dòng)態(tài)改變某個(gè)類的結(jié)構(gòu)添加刪除修改新的屬性方法常見(jiàn)的字節(jié)碼操作類庫(kù),這是的項(xiàng)目的一部分。 Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)字節(jié)碼操作-Javassist介紹) @(Java知識(shí)點(diǎn)總結(jié))[Java, 動(dòng)態(tài)字節(jié)碼操作] 運(yùn)行時(shí)操作字節(jié)碼可以讓我們實(shí)現(xiàn)如下功能: 動(dòng)態(tài)生成新的類 動(dòng)態(tài)改變某個(gè)類的結(jié)...

    godruoyi 評(píng)論0 收藏0
  • Java動(dòng)態(tài)編程初探

    摘要:動(dòng)態(tài)編程使用場(chǎng)景通過(guò)配置生成代碼,減少重復(fù)編碼,降低維護(hù)成本。動(dòng)態(tài)生成字節(jié)碼操作字節(jié)碼的工具有,其中有兩個(gè)比較流行的,一個(gè)是,一個(gè)是。 作者簡(jiǎn)介 傳恒,一個(gè)喜歡攝影和旅游的軟件工程師,先后從事餓了么物流蜂鳥(niǎo)自配送和蜂鳥(niǎo)眾包的開(kāi)發(fā),現(xiàn)在轉(zhuǎn)戰(zhàn) Java,目前負(fù)責(zé)物流策略組分流相關(guān)業(yè)務(wù)的開(kāi)發(fā)。 什么是動(dòng)態(tài)編程 動(dòng)態(tài)編程是相對(duì)于靜態(tài)編程而言的,平時(shí)我們討論比較多的靜態(tài)編程語(yǔ)言例如Java, 與動(dòng)態(tài)...

    趙連江 評(píng)論0 收藏0
  • Java 動(dòng)態(tài)性(4) - 字節(jié)碼操作

    摘要:字節(jié)碼操作動(dòng)態(tài)性的兩種常見(jiàn)實(shí)現(xiàn)方式字節(jié)碼操作反射運(yùn)行時(shí)操作字節(jié)碼可以讓我們實(shí)現(xiàn)如下功能動(dòng)態(tài)生成新的類動(dòng)態(tài)改變某個(gè)類的結(jié)構(gòu)添加刪除修改新的屬性方法優(yōu)勢(shì)比反射開(kāi)銷小性能高性能高于反射低于常見(jiàn)的字節(jié)碼操作類庫(kù)這是的項(xiàng)目的一部分是廣泛使用的一種框它 1.字節(jié)碼操作 JAVA動(dòng)態(tài)性的兩種常見(jiàn)實(shí)現(xiàn)方式字節(jié)碼操作 反射 運(yùn)行時(shí)操作字節(jié)碼可以讓我們實(shí)現(xiàn)如下功能動(dòng)態(tài)生成新的類 動(dòng)態(tài)改變某個(gè)類的結(jié)構(gòu)(...

    CoderStudy 評(píng)論0 收藏0
  • Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)字節(jié)碼操作-Javassist的API使用)

    摘要:因此,若想對(duì)對(duì)象進(jìn)行修改,必須對(duì)其進(jìn)行解凍,通過(guò)方法進(jìn)行生成一個(gè)方法生成一個(gè)方法通過(guò)反射調(diào)用生成的方法方法體前面和后面加執(zhí)行語(yǔ)句方法體前面通過(guò)反射調(diào)用生成的方法張三生成屬性和方法獲取屬性生成構(gòu)造器可以在構(gòu)造器前后加代碼注解操作 Java知識(shí)點(diǎn)總結(jié)(動(dòng)態(tài)字節(jié)碼操作-Javassist的API使用) @(Java知識(shí)點(diǎn)總結(jié))[Java, 動(dòng)態(tài)字節(jié)碼操作] 參考文章: 傳送 操作示例: pu...

    U2FsdGVkX1x 評(píng)論0 收藏0
  • Android 性能監(jiān)控系列一(原理篇)

    摘要:全稱應(yīng)用性能管理監(jiān)控后面我會(huì)通過(guò)一系列的文章來(lái)介紹的原理框架設(shè)計(jì)與實(shí)現(xiàn)等等。在應(yīng)用構(gòu)建期間,通過(guò)修改字節(jié)碼的方式來(lái)進(jìn)行字節(jié)碼插樁就是實(shí)現(xiàn)自動(dòng)化的方案之一。 showImg(https://segmentfault.com/img/bVbbRX6?w=1995&h=1273); 歡迎關(guān)注微信公眾號(hào):BaronTalk,獲取更多精彩好文! 一. 前言 性能問(wèn)題是導(dǎo)致 App 用戶流失的罪魁...

    yacheng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<