Java 运行时注释处理
我的问题如下:;请帮忙 我有一个只适用于我希望在运行时处理的方法的注释,比如Java 运行时注释处理,java,annotations,Java,Annotations,我的问题如下:;请帮忙 我有一个只适用于我希望在运行时处理的方法的注释,比如 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnno { String name();} 这是我的处理器:
@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。我错在哪里了?请告知。如果要查找单个方法的注释,可以首先使用反射和do a获得该方法。差不多 Class clazz=…//获取类对象 Method=clazz.getMethodA,空 或者,在当前代码中,您仍然可以循环所有方法,并通过在for循环中执行m.getName来匹配方法名称,以找出您现在正在查看的方法
注:我不完全确定你的代码是否能编译MyAnnoProcessor,我没有看到任何方法,请尝试遵循方法的命名约定你能为MyAnnoProcessor类粘贴整个代码吗?你得到了所有的方法,但是在某个时候你应该区分A和B来正确处理注释,对吗?你必须编辑你的问题并粘贴代码。我现在看到的代码更少了。是的,在问题中编辑了它。我不知道如何区分是A还是B叫它。谢谢。我想要一个注释处理器,它只根据传递给注释方法“name”的值返回对象的实例。也就是说,@MyAnnoname=Personpublic void doSthWithperson{//和Person实例在这里通过注释处理器}可用,或者@MyAnnoname=Employee public void doSthWithEmployee{//和Employee实例由注释处理器}可用。如果不将带注释的方法显式地传递给注释处理器,这是可能的吗?