Поле CONSTRUCTOR
Поле CONSTRUCTOR класса ElementType представляет
собой константу перечисления, которая используется в аннотации
Target. Когда вы указываете это поле в качестве значения
для Target, вы сообщаете компилятору, что ваша
пользовательская аннотация может быть применена только
к конструкторам классов. Параметров у этого поля нет,
оно является простой константой перечисления.
Синтаксис
ElementType.CONSTRUCTOR
Пример
Давайте создадим аннотацию, которая может применяться только к конструкторам:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.CONSTRUCTOR)
@interface MyConstructorAnnotation
{
}
public class Main
{
@MyConstructorAnnotation
public Main()
{
}
public static void main(String[] args)
{
System.out.println("Annotation applied to constructor");
}
}
Результат выполнения кода:
"Annotation applied to constructor"
Пример
Давайте проверим, что аннотация с CONSTRUCTOR
действительно доступна только для конструкторов.
Попробуем применить её к полю и получим ошибку компиляции:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.CONSTRUCTOR)
@interface MyConstructorAnnotation
{
}
public class Main
{
@MyConstructorAnnotation
private int value;
public static void main(String[] args)
{
System.out.println("This code will not compile");
}
}
В результате компиляции будет получена ошибка,
так как аннотация MyConstructorAnnotation
не может быть применена к полю.
Пример
Давайте посмотрим, как выглядит применение аннотации
с CONSTRUCTOR к нескольким конструкторам
в одном классе:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.CONSTRUCTOR)
@interface Init
{
}
public class Main
{
@Init
public Main()
{
System.out.println("Default constructor");
}
@Init
public Main(int value)
{
System.out.println("Constructor with value: " + value);
}
public static void main(String[] args)
{
new Main();
new Main(5);
}
}
Результат выполнения кода:
"Default constructor"
"Constructor with value: 5"
Смотрите также
-
класс
ElementType,
который содержит типы элементов аннотаций -
аннотация
Target,
которая задаёт область применения аннотации -
поле
METHOD,
которое указывает на применение к методам -
поле
FIELD,
которое указывает на применение к полям