JavaAssist的进阶使用
1、 JavaAssist的介绍与常见使用方法
众所周知,JavaAssist和CGlib作为两个著名的操作Java的ByteCode方式,笔者认为JavaAssist更加灵活些,而CGlib更偏向定制化的应用,比如SpringBoot;而JavaAssist有一级项目吗?笔者知道的有Dubbo和Mybaits。我们先看JavaAssist的常用功能。
1.1 ClassPool的获取
通常我们用以下方式来获取默认ClassPool池:
ClassPool pool = ClassPool.getDefault();
而ClassPool还支持级联Pool:
ClassPool pool = ClassPool.getDefault();
ClassPool child = new ClassPool(pool);
1.2 ClassPool创建Class与获取Class
ClassPool创建或者获取的Class为CtClass,其中创建Class按照以下的方式:
CtClass ctClass = pool.makeClass(“com.javaassisttest.test”);
而获取已有的Class方式为:
CtClass ctClass = pool.get(“com.javaassisttest.test”);
在获取Class的时候,可能需要注意的是:当Class使用自定义的ClassLoader加载的时候,这时候由于JavaAssist使用的是AppClassLoader的加载,因此是找不到该class,需要添加ClassPath,添加ClassPath的方式如下:
pool.appendClassPath(“路径”);
可支持多次添加
JavaAssist的进阶使用
最新推荐文章于 2024-05-11 15:40:01 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)