java运行时注释处理
我的问题如下:;请帮忙
我有一个只适用于我希望在运行时处理的方法的注释,比如
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
String name();}
这是我的处理器:
public class MyAnnoProcessor(Class cls){
Method[] m = cls.getClass().getMethods();
...// read the value passed to name and create an instance of an object depending on the value of 'name'
对。MyAnnoProcessor代码如下所示:
public class MyAnnoProcessor(Class cls){
Method[] methods = cls.getMethods();
for(Method m: methods){
MyAnno an = (MyAnno) m.getAnnotation(MyAnno.class);
if(an!=null)
sysout(an.name());
....//call another method to create a class based on the value passed to 'name'
现在,我有一个类,我想在其中编写许多用@MyAnno注释的方法,但每个方法都将不同的值传递给“name”。我只是无法找到一种理想的方式来处理注释处理?“MyAnnoProcessor”应该如何知道哪些(对象)需要返回到哪个方法
比如说,我用方法a来做这件事:
@MyAnno(name="testA")
public void A(){
MyAnnoProcessor(this);
...}
我再次在方法B中这样做:
@MyAnno(name="testB")
public void B(){
MyAnnoProcessor(this);
...}
在方法B对“name”的后续调用中,“MyAnnoProcessor”似乎将“name”的值读取为“testA”,而不是“testB”。我错在哪里了?请告知
# 1 楼答案
如果要查找单个方法的注释,可以首先使用反射和do a^{} 获取该方法。差不多
Class clazz = ...//obtain class object Method method = clazz.getMethod("A", null);
或者,使用当前代码,您仍然可以循环所有方法并通过在
for
循环中执行m.getName()
来匹配方法名称,以找出您现在正在查看的方法注:我不完全确定你的代码是否可以编译(MyAnnoProcessor,我没有看到任何方法),请尝试遵循方法的命名约定)