Мой вопрос заключается в следующем: Пожалуйста помогите.Runtime Обработка аннотации
У меня есть аннотация, применимая к методам только что я хочу быть обработано во время выполнения, скажу
@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, но каждый метод передает другое значение «имя». Я просто не могу найти способ обработать обработку аннотаций идеальным способом? Как «MyAnnoProcessor» знает, что (объект) нужно вернуть к какому методу?
Скажем, я делаю это в методе A:
@MyAnno(name="testA")
public void A(){
MyAnnoProcessor(this);
...}
И снова я сделать это в методе B:
@MyAnno(name="testB")
public void B(){
MyAnnoProcessor(this);
...}
'MyAnnoProcessor', кажется, читает значение 'имя' как «testA», а не «testB» в последующем вызове от метода B. Где я ошибаюсь? Пожалуйста, порекомендуйте.
Вы можете вставить весь код для 'MyAnnoProcessor 'класс? Вы получаете все методы, но в какой-то момент вы должны различать 'A()' и 'B()' для правильной обработки аннотаций? – prabugp
Вам нужно будет отредактировать свой вопрос и вставить код. Теперь я вижу еще меньше кода. – prabugp
Да, отредактировал его в вопросе. Я не уверен, как отличить, называется ли это A() или B(). – 5122014009