Как сделать ограничение на использование целей аннотации?
Заметил в api где используются аннотации есть некий ограничитель на использование определённых целей аннотаций.
Скажите пожалуйста, как это реализуется.
Например: Использовать цель password нельзя, если отсутствует цель user
Работает:
@User(username = "root", password = "123456")
public static void addUser() { }
Не работает:
@User(password = "123456")
public static void addUser() { }
Ответы (1 шт):
Мне кажется вы не с той стороны смотрите на проблему. Ограничитель - не то слово, которое правильно описывает ситуацию. Смотрите на это с точки зрения обязательных/необязательных полей. Так, для вашего примера существует обязательное поле username и необязательное password
В итоге при создании аннотации имеем следующую ее реализацию:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(value=ElementType.METHOD)
public @interface User {
String username();
String password() default "";
}
Мы определили дефолтное значение для password ключевым словом default (в данном случае это пустая строка, но при необходимости там может быть любое строчное значение), тем самым сделали password необязательным, а username напротив обязательным.
Теперь все работает именно так, как ожидалось.
Данный код работает:
@User(username = "root", password = "123456")
public static void addUser() { }
А этот код уже нет:
@User(password = "123456")
public static void addUser() { }