在Java 7中运行时更改具有多个字段的自定义批注实现

时间:2018-09-04 08:10:21

标签: java reflection annotations java-7

我需要在运行时(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); 

最后,在另一个类中,我需要在某些情况下为带注释的方法更改一些注释值,例如对于方法getAddress()从true到false要求。我这样获取批注数据:

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。抱歉,我的英语...

0 个答案:

没有答案