Мне нужно изменить одно из пользовательских полей аннотации во время выполнения (Java 7) из другого класса. Поскольку доступ к полю аннотации для данного метода не является проблемой, он не может обнаружить, как изменить значение полей в аннотации (если это возможно).
У меня есть такая реализация аннотации:
@Target({ElementType.METHOD})
@Retention(RUNTIME)
public @interface Something {
public String description() default "";
public boolean required() default false;
public int sortOrder() default -1;
}
В Java-классе XYZ
Я аннотировал много методов и определяю поля аннотаций, такие как:
@Something(description="name",required=true, sortOrder=1)
String getName();
void setName(String name);
@Something(description="address",required=true, sortOrder=1)
String getAddress();
void setAddress(String address);
Наконец, в другом классе мне нужно изменить некоторые значения аннотации для аннотированного метода в определенных условиях, например, требуется с true на false для метода getAddress()
. Я получаю аннотации так:
try{
Method method = XYZ.class.getDeclaredMethod("getAddress", null);
method.setAccessible(true);
Something ann = method.getAnnotation(Something.class);
String name = ann.description();
} catch (Exception e) {
e.printStackTrace();
}
Я застрял с этим, поскольку нашел, как изменить значение для аннотаций только с одним
поле.
PS. Извините за мой английский ...