4
public @interface MyAnnotation{

    public String someProperty();

    //How should I achieve this?
    public String someOtherProperty() default someProperty();


}

我在注释中有两个属性,当未指定一个属性时,我想将另一个用作默认值。有没有办法做到这一点?

或者我必须做以下检查

if(myAnnotation.someOtherProperty() == null){
    //Use the value of someProperty
}
4

1 回答 1

4

您当前的情况根本不可能 - 注释属性的默认值必须是静态可解析的。现在,您正在尝试将默认值定义为一个在实际使用注释之前不会设置的属性(也就是动态)。

您可以做的是这样定义您的注释:

public @interface MyAnnotation{

    public String someProperty();

    public String someOtherProperty() default "";
}

然后在您的注释处理器中,使用somePropertyfor的值someOtherProperty,如果someOtherProperty为空。

于 2013-02-01T13:47:10.773 回答