我需要在运行时(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。抱歉,我的英语...