网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Eclipse下Javassist怎么用-创新互联

这篇文章主要介绍Eclipse下Javassist怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联-专业网站定制、快速模板网站建设、高性价比虎林网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式虎林网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖虎林地区。费用合理售后完善,十载实体公司更值得信赖。

示例如下

项目的结构:

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");
			//设置根路径。(这里设置的根路径显然没被writeFile使用) 
			CtClass cc = pool.makeClass("com.thrblock.javassist.EditableChanged");
			//模拟Hibernate代理模式,我们创建一个新类 
			cc.setSuperclass(pool.get("com.thrblock.javassist.Editable"));
			//设置其父类 
			CtMethodcm = CtNewMethod.make("public void showInfo(){super.showInfo();System.out.println(\"CustomInsertHAHA!\");}",cc);
			//追加一个方法,注意它覆盖了父类中的方法。 
			cc.addMethod(cm);
			cc.writeFile(".\\bin");
			//这里比较重要,空参的结果就是没有保存到eclipse字节码根路径里。
		}
		catch (NotFoundException | CannotCompileException | IOException e) {
			e.printStackTrace();
		}
		try{
			Class cl = Class.forName("com.thrblock.javassist.EditableChanged");
			//加载我们的新类 
			Editableed = (Editable) cl.newInstance();
			//由于其继承与Editable类,这里和Hibernate里的load道理一样。 
			ed.showInfo();
			//调用方法。
		}
		catch (ClassNotFoundException | InstantiationException |IllegalAccessException e) {
			e.printStackTrace();
		}
	}
}

打印结果:

InfoDefault!

CustomInsertHAHA!

其他注意事项:

由于我们是生成了一个类,如果这个类名和原类名一样,则会覆盖class文件,但是如果修改之前该class已经被JVM装入,则修改的部分不会生效,必须重启JVM。

以上是“Eclipse下Javassist怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


分享题目:Eclipse下Javassist怎么用-创新互联
网页地址:http://bjjierui.cn/article/pesii.html

其他资讯