![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javassist
SilenceCarrot
这个作者很懒,什么都没留下…
展开
-
javassist翻译之一《读写字节码》
Javassist是一个处理Java字节码的类库。 Java字节码存储在类的二进制文件中。 每个类文件都包含一个Java类或接口。 类Javassist.CtClass是一个类文件的抽象表示。CtClass(编译时类)对象则是处理类文件的句柄。下面的程序是一个非常简单的例子: ClassPool pool = ClassPool.getDefault(); CtClass cc = pool....翻译 2018-02-23 15:18:18 · 462 阅读 · 0 评论 -
javassist翻译之二《ClassPool》
一个ClassPool对象是一个包含很多CtClass对象的容器。一个CtClass对象只要被创建一次,它就会一直在ClassPool中。这是因为编译器在编译该CtClass表示的类的源代码时可能需要稍后访问CtClass对象。 例如,假设一个新的方法getter( )被添加到代表Point类的CtClass对象中。稍后,程序将尝试编译源代码,包括在Point中调用getter( )方法,并使用...翻译 2018-02-23 15:37:18 · 726 阅读 · 0 评论 -
javassist翻译之三《类加载器》
如果事先知道哪些类必须被修改,修改这些类最简单的方法如下: 通过调用ClassPool.get( ) 获取一个CtClass对象; 修改它; 对该CtClass对象调用writeFile( )或toBytecode( )方法以获取修改的类文件; 但是如果在加载时确定类是否被修改,则用户必须使Javassist与类加载器协作。Javassist可以与类加载器一起使用,以便字节码在加载时可...翻译 2018-02-23 15:50:10 · 831 阅读 · 0 评论 -
javass翻译之四《自省与定制》
CtClass提供了自省的方法。Javassist的内省能力与Java反射API兼容。CtClass提供了getName( ),getSuperclass( ),getMethods( )等方法。CtClass还提供了修改类定义的方法。 它允许添加一个新的字段,构造函数和成员方法。 检测方法体也是可以办到的。 方法由CtMethod对象表示。 CtMethod提供了几种修改方法定义的方法。 请注...翻译 2018-02-23 17:33:48 · 402 阅读 · 0 评论