#вопросы_с_собеседований
Есть ли способ ограничить элементы, к которым можно применить аннотацию?
Да, для этой цели можно использовать аннотацию
Вот пример ограничения использования аннотации
@javatg
Есть ли способ ограничить элементы, к которым можно применить аннотацию?
Да, для этой цели можно использовать аннотацию
@Target
. Если мы попытаемся использовать аннотацию в контексте, где она неприменима, компилятор выдаст ошибку.Вот пример ограничения использования аннотации
@SimpleAnnotation
только объявлениями полей:@Target(ElementType.FIELD)
public @interface SimpleAnnotation {
// ...
}
Мы можем передать несколько констант, если хотим сделать их применимыми в большем количестве контекстов:@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PACKAGE })
Мы даже можем сделать аннотацию, чтобы ее нельзя было использовать для аннотирования чего-либо. Это может пригодиться, когда объявленные типы предназначены исключительно для использования в качестве типа-члена в сложных аннотациях:@Target({})
public @interface NoTargetAnnotation {
// ...
}
@javatg