码迷,mamicode.com
首页 > 编程语言 > 详细

javassist初接触

时间:2014-08-24 14:10:12      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   io   ar   art   div   cti   

直接上代码:

pom增加依赖:

    <dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.18.2-GA</version>
</dependency>

写个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被修改了。

javassist初接触

标签:style   blog   color   java   io   ar   art   div   cti   

原文地址:http://www.cnblogs.com/acehalo/p/3932732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!