博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javassist初接触
阅读量:4594 次
发布时间:2019-06-09

本文共 1383 字,大约阅读时间需要 4 分钟。

直接上代码:

pom增加依赖:

org.javassist
javassist
3.18.2-GA

写个Hello类:

package JavassistTest.JavassistTest;public class Hello {    public void sayHello(){        System.out.println("Hello world");    }}

主类:

package JavassistTest.JavassistTest;import javassist.CannotCompileException;import javassist.ClassPool;import javassist.CtClass;import javassist.CtMethod;import javassist.CtNewMethod;import javassist.NotFoundException;/** * Hello world! * */public class App {    public static void main(String[] args) throws NotFoundException,            CannotCompileException, InstantiationException, IllegalAccessException, ClassNotFoundException {                //~加上报错,和类加载有关系,这里new的话会把Hello类加载,之后再加载的话就会报错        //Hello hell=new Hello();        //hell.sayHello();        //~                                CtClass ctClass = ClassPool.getDefault().getCtClass("JavassistTest.JavassistTest.Hello");                        CtMethod ctMethod = ctClass.getDeclaredMethod("sayHello");        ctMethod.setBody("System.out.println(\"hi\");");                            Class ch=ctClass.toClass();                Hello h=(Hello) ch.newInstance();        h.sayHello();                        Hello hel=new Hello();        hel.sayHello();     }}

输出结果:

hi

hi

结果一样,说明是class被修改了。

转载于:https://www.cnblogs.com/acehalo/p/3932732.html

你可能感兴趣的文章
获取ScrollView的onScrollListener
查看>>
约数的个数
查看>>
Visual Studio 2008 具有一些新的报表功能和改进之处
查看>>
python环境错误
查看>>
CentOS 6.5优化开机启动服务
查看>>
mk文件配置第三方jar包,so文件
查看>>
Maven 进阶讲解(聚合)
查看>>
练习-模拟账号登录
查看>>
JDK(java development kit java开发工具包)的安装
查看>>
POJ 3233 - Matrix Power Series(矩阵快速幂)
查看>>
J-Robot,能走、能跳舞的机器人
查看>>
linux 下c语言调用终端命令
查看>>
orale中如何获取当前月份?
查看>>
程序设计语言.
查看>>
How to find First Non-Repeated Character from String
查看>>
排列与组合定理和公式
查看>>
20. Valid Parentheses
查看>>
eval()和$.parseJSON()注意事项
查看>>
eclipse-帮助文档
查看>>
产品笔记
查看>>