检测注释参数的完整性

Detection the completeness of Annotation's arguments

这是来自 https://en.wikipedia.org/wiki/Java_annotation

的示例
  @Author(first = "Oompah", last = "Loompah")
  Book book = new Book();

是否可以检测用户是否提供了所有需要的参数?例如,在这个测试用例中,如果参数只有 first = "Oompah",它需要被识别为不完整的(因为缺少 last = "Loompah")。目前我不能这样做,因为如果提供了不完整的参数,我可以获得注释的 默认值 。 非常感谢。

这取决于注解的声明。默认情况下,所有参数都是必需的。

@interface Author {
    String first();
    String last();
}

class Book {

    public static void main(String[] args) {
        @Author(first = "John")
        Book book = new Book();
    }
}

在此示例中,将出现编译时错误 error: annotation @Author is missing a default value for the element 'last'

因此,如果没有理由为注释参数设置默认值,则不应在其声明中用 default 标记。在这种情况下,必须提供每个参数。