真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Eclipse下Javassist怎么用

這篇文章主要介紹Eclipse下Javassist怎么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司專(zhuān)注于成縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供成縣營(yíng)銷(xiāo)型網(wǎng)站建設(shè),成縣網(wǎng)站制作、成縣網(wǎng)頁(yè)設(shè)計(jì)、成縣網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造成縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供成縣網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

示例如下

項(xiàng)目的結(jié)構(gòu):

Eclipse下Javassist怎么用

Editable.java: 
package com.thrblock.javassist; 
  
public class Editable { 
   public void showInfo(){ 
       System.out.println("InfoDefault!"); 
   } 
}
Main.java: 
package com.thrblock.javassist;
import java.io.IOException;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
import javassist.NotFoundException;
public class Main {
	public static void main(String[] args) {
		ClassPool pool = ClassPool.getDefault();
		try{
			pool.insertClassPath(".\\bin");
			//設(shè)置根路徑。(這里設(shè)置的根路徑顯然沒(méi)被writeFile使用) 
			CtClass cc = pool.makeClass("com.thrblock.javassist.EditableChanged");
			//模擬Hibernate代理模式,我們創(chuàng)建一個(gè)新類(lèi) 
			cc.setSuperclass(pool.get("com.thrblock.javassist.Editable"));
			//設(shè)置其父類(lèi) 
			CtMethodcm = CtNewMethod.make("public void showInfo(){super.showInfo();System.out.println(\"CustomInsertHAHA!\");}",cc);
			//追加一個(gè)方法,注意它覆蓋了父類(lèi)中的方法。 
			cc.addMethod(cm);
			cc.writeFile(".\\bin");
			//這里比較重要,空參的結(jié)果就是沒(méi)有保存到eclipse字節(jié)碼根路徑里。
		}
		catch (NotFoundException | CannotCompileException | IOException e) {
			e.printStackTrace();
		}
		try{
			Class cl = Class.forName("com.thrblock.javassist.EditableChanged");
			//加載我們的新類(lèi) 
			Editableed = (Editable) cl.newInstance();
			//由于其繼承與Editable類(lèi),這里和Hibernate里的load道理一樣。 
			ed.showInfo();
			//調(diào)用方法。
		}
		catch (ClassNotFoundException | InstantiationException |IllegalAccessException e) {
			e.printStackTrace();
		}
	}
}

打印結(jié)果:

InfoDefault!

CustomInsertHAHA!

其他注意事項(xiàng):

由于我們是生成了一個(gè)類(lèi),如果這個(gè)類(lèi)名和原類(lèi)名一樣,則會(huì)覆蓋class文件,但是如果修改之前該class已經(jīng)被JVM裝入,則修改的部分不會(huì)生效,必須重啟JVM。

以上是“Eclipse下Javassist怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章題目:Eclipse下Javassist怎么用
鏈接地址:http://weahome.cn/article/pjidjg.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部