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

Jér*_*nge 41 java annotations

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

public @interface MyAnnotation {
    int MyValue();
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*ers 70

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

注释MyAnnotation缺少MyValue


Cli*_*int 9

给定的

public @interface MyAnnotation {
    int MyValue();
}
Run Code Online (Sandbox Code Playgroud)

一类

@MyAnnotation
public class MyClass {

}
Run Code Online (Sandbox Code Playgroud)

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