I have two annotations, this class one:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Processor {
public String description() default "";
}
And also this Field one:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ProcessorParameter {
public String name() default "";
public String value() default "";
public String[] range() default {};
public String description() default "";
}
They both are getting used in a class like this one:
@Processor(description = "blabla")
public class Prozessor1{
@ProcessorParameter(description = "test3")
public int parameter1;
@ProcessorParameter(description = "test4")
public int parameter2;
@ProcessorParameter(description = "test5")
public int parameter3;
}
I have different classes of the Prozessor and I want to be able to access all the parameters of the Prozessor and ProcessorParameter Annotation.
Right now I am using this code:
public static void main(String[] args) {
Reflections ref = new Reflections();
for (Class<?> cl:
ref.getTypesAnnotatedWith(Processor.class)){
Processor processor = cl.getAnnotation(Processor.class);
System.out.printf("Found class: %s, with meta name: %s%n",
cl.getSimpleName(),processor.description());
for(Field field : cl.getFields()) {
System.out.printf("Found parameter: %s and %s%n",
field.getName(), field.getName());
}
}
}
Right now I am getting this as a result:
Found class: Prozessor1, with meta name: blabla
Found parameter: parameter1 and parameter1
Found parameter: parameter2 and parameter2
Found parameter: parameter3 and parameter3
I obviously do not need the second field.getName() but I want to access the passed ProcessorParameter description ("test3"/"test4"/"test5") but I do not know how to access this.
Aucun commentaire:
Enregistrer un commentaire