Выявление полноты аргументов аннотации - PullRequest
1 голос
/ 07 марта 2020

Это пример из https://en.wikipedia.org/wiki/Java_annotation

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

Можно ли определить, предоставляет ли пользователь ВСЕ необходимые аргументы? Например, в этом тестовом случае, если аргумент имеет значение ТОЛЬКО first = "Oompah" , его необходимо определить как неполное (из-за отсутствия last = "Loompah" ) , В настоящее время я не могу этого сделать, потому что, если предоставляются неполные аргументы, я могу получить аннотацию значение по умолчанию . Большое спасибо.

1 Ответ

1 голос
/ 07 марта 2020

Зависит от объявления аннотации. По умолчанию все аргументы обязательны.

@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 в декларации. И в этом случае каждый аргумент должен быть предоставлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...