是否可以强制使用Java注释的值?

时间:2011-08-15 20:14:09

标签: java annotations

Java允许在注释中定义值,例如:

public @interface MyAnnotation {
    int MyValue();
}

虽然可以为MyValue注释设置默认值,但我想知道是否可以强制使用它。我的意思是强制用户在注释类或字段时为MyValue提供值。

我浏览了文档但找不到任何内容。有没有人能解决这个问题,或者只是不可能强制要求注释的值?

3 个答案:

答案 0 :(得分:63)

如果您未指定默认值,则必须使用此值。对于使用注释而不使用MyValue属性的示例,会生成此编译器错误:

  

注释MyAnnotation缺少MyValue

答案 1 :(得分:4)

给出

public @interface MyAnnotation {
    int MyValue();
}

一个班级

@MyAnnotation
public class MyClass {

}

将是一个没有值的编译错误。

答案 2 :(得分:1)

我没有尝试过这个,但是如果你想强制将值强制为一个特定的值,可能会使类型成为枚举。

public @interface MyAnnotation {
    Status status();
}

Status是枚举。