我认为这在Java中可能是不可能的,因为注释和它的参数是在编译时解析的。我有一个接口,如下所示:
public interface FieldValues {
String[] FIELD1 = new String[]{"value1", "value2"};
}
另一个类是,
@SomeAnnotation(locations = {"value1", "value2"})
public class MyClass {
....
}
我用注解标记了许多类,我想知道是否可以避免在我更喜欢使用的每个注解中指定字符串
@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
....
}
但是,这会导致编译错误,如注释值应该是数组初始值设定项等。有人知道如何使用字符串常量或String[]常量为注释提供值吗?
发布于 2010-01-15 01:19:08
在您的示例中,您没有为它提供数组。下面的代码可以正常编译:
public @interface SampleAnnotation {
String[] sampleValues();
}
public class Values {
public static final String val0 = "A";
public static final String val1 = "B";
@SampleAnnotation(sampleValues={ val0, val1 })
public void foo() {
}
}
发布于 2020-04-06 22:19:08
您可以使用枚举,并在注释字段中引用该枚举
https://stackoverflow.com/questions/2065937
复制相似问题