一个普通的类,一个 name 属性, 只有 getter 方法,木有 setter.
package org.alex.cases.javassist;
public class TestClass
{
private String name;
public String getName()
{
return name;
}
}
利用 javassist 重写 TestClass 类.
package org.alex.cases.javassist;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;
public class TestJavassist
{
public static void main(String[] args) throws NotFoundException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException, CannotCompileException,
IOException, NoSuchMethodException, SecurityException
{
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("org.alex.cases.javassist.TestClass");
CtMethod setNameMethod = CtMethod.make("public void setName(String name){this.name = $1;}", cc);
cc.addMethod(setNameMethod);
cc.writeFile();
@SuppressWarnings("unchecked")
Class<TestClass> c = cc.toClass();
TestClass instance = (TestClass) c.newInstance();
Method method = c.getMethod("setName", String.class);
method.invoke(instance, "a");
System.out.println(instance.getName());
}
}
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.17.1-GA</version>
</dependency>
分享到:
相关推荐
开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发工具 javassist-3.21.0-GA开发...
赠送jar包:javassist-3.19.0-GA.jar; 赠送原API文档:javassist-3.19.0-GA-javadoc.jar; 赠送源代码:javassist-3.19.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.19.0-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.23.1-GA.jar; 赠送原API文档:javassist-3.23.1-GA-javadoc.jar; 赠送源代码:javassist-3.23.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.23.1-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.27.0-GA.jar; 赠送原API文档:javassist-3.27.0-GA-javadoc.jar; 赠送源代码:javassist-3.27.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.27.0-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.24.0-GA.jar; 赠送原API文档:javassist-3.24.0-GA-javadoc.jar; 赠送源代码:javassist-3.24.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.24.0-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.23.1-GA.jar; 赠送原API文档:javassist-3.23.1-GA-javadoc.jar; 赠送源代码:javassist-3.23.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.23.1-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.24.0-GA.jar; 赠送原API文档:javassist-3.24.0-GA-javadoc.jar; 赠送源代码:javassist-3.24.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.24.0-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.21.0-GA.jar; 赠送原API文档:javassist-3.21.0-GA-javadoc.jar; 赠送源代码:javassist-3.21.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.21.0-GA.pom; 包含翻译后的API文档...
赠送jar包:javassist-3.20.0-GA.jar; 赠送原API文档:javassist-3.20.0-GA-javadoc.jar; 赠送源代码:javassist-3.20.0-GA-sources.jar; 包含翻译后的API文档:javassist-3.20.0-GA-javadoc-API文档-中文...
javassist包
赠送jar包:javassist-3.18.1-GA.jar; 赠送原API文档:javassist-3.18.1-GA-javadoc.jar; 赠送源代码:javassist-3.18.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.18.1-GA.pom; 包含翻译后的API文档...
javassist版本 javassist-3.15.0-GA
赠送jar包:javassist-3.18.1-GA.jar; 赠送原API文档:javassist-3.18.1-GA-javadoc.jar; 赠送源代码:javassist-3.18.1-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.18.1-GA.pom; 包含翻译后的API文档...
javassist-3.7.ga.jar反射类javassist.jar源码
javassist-3.27.0-GA.jar
javassist的使用,也可直接使用该demo修改自己的jar中的方法,demo中写了两种方法可供参考
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作...
javassist-3.11.0
赠送jar包:javassist-3.21.0-GA.jar; 赠送原API文档:javassist-3.21.0-GA-javadoc.jar; 赠送源代码:javassist-3.21.0-GA-sources.jar; 赠送Maven依赖信息文件:javassist-3.21.0-GA.pom; 包含翻译后的API文档...
环境JDK1.8 IDEA项目 javaagent+javassist 下载后导入即可