java的字节码工具-javassist体验三
这篇还是javassist的一些使用小技巧,我们可以用javassist来读取java的注解信息
首先我们有这样一个注解1
2
3
4public Author {
String name();
int year();
}
注解可以打在类上,那么我们建一个point类1
2
3
4
public class Point {
int x, y;
}
name 是 nick,24年的,
然后我想通过javassist来获取这个类上的注解信息
我们先从对象池中获取这个类1
CtClass cc = ClassPool.getDefault().get("org.example.Point");
然后获取类上的注解1
2Object[] all = cc.getAnnotations();
Author a = (Author)all[0];
将第一个注解强转成Author,因为这里我们知道是只有这个注解,否则可以做的更通用一点
然后把这个主机上的值获取出来1
2
3String name = a.name();
int year = a.year();
System.out.println("name: " + name + ", year: " + year);
可以获得结果,非常简单1
2
3name: nick, year: 2024
Process finished with exit code 0
为什么讲这么个简单的例子呢,因为这个刚好可以作为一种实现aop的途径,我们可以获取类的信息,包括注解上的,这样我们就可以从源头去理解这些aop啥的可以通过什么方法来实现