Изменение пользовательской реализации аннотации с несколькими полями во время выполнения в Java 7 - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно изменить одно из пользовательских полей аннотации во время выполнения (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. Извините за мой английский ...

...