首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从常量java向批注提供值

如何从常量java向批注提供值
EN

Stack Overflow用户
提问于 2010-01-15 01:02:41
回答 2查看 203.7K关注 0票数 165

我认为这在Java中可能是不可能的,因为注释和它的参数是在编译时解析的。我有一个接口,如下所示:

代码语言:javascript
复制
public interface FieldValues {
   String[] FIELD1 = new String[]{"value1", "value2"};
}

另一个类是,

代码语言:javascript
复制
@SomeAnnotation(locations = {"value1", "value2"})
public class MyClass {
   ....
}

我用注解标记了许多类,我想知道是否可以避免在我更喜欢使用的每个注解中指定字符串

代码语言:javascript
复制
@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
   ....
}

但是,这会导致编译错误,如注释值应该是数组初始值设定项等。有人知道如何使用字符串常量或String[]常量为注释提供值吗?

EN

回答 2

Stack Overflow用户

发布于 2010-01-15 01:19:08

在您的示例中,您没有为它提供数组。下面的代码可以正常编译:

代码语言:javascript
复制
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() {
    }
}
票数 11
EN

Stack Overflow用户

发布于 2020-04-06 22:19:08

您可以使用枚举,并在注释字段中引用该枚举

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2065937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档