Поле PARAMETER класса ElementType
Поле PARAMETER класса ElementType
используется в аннотации @Target
и указывает, что аннотация может быть применена
к параметру метода или конструктора.
Это позволяет помечать входящие аргументы методов
и конструкторов, что особенно полезно для
документирования, валидации и анализа кода.
В сочетании с другими полями класса ElementType
данное поле позволяет гибко настраивать область
применения пользовательских аннотаций.
Синтаксис
@Target(ElementType.PARAMETER)
Пример
Давайте создадим аннотацию @MyAnnotation,
которая может применяться только к параметрам метода:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.PARAMETER)
@interface MyAnnotation
{
}
public class Main
{
public static void printName(@MyAnnotation String name)
{
System.out.println(name);
}
public static void main(String[] args)
{
printName("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем применить аннотацию
@MyAnnotation к методу, а не к параметру,
чтобы убедиться, что компилятор выдаст ошибку:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.PARAMETER)
@interface MyAnnotation
{
}
public class Main
{
@MyAnnotation
public static void printName(String name)
{
System.out.println(name);
}
public static void main(String[] args)
{
printName("abcde");
}
}
Результат выполнения кода:
error: annotation type not applicable to this kind of declaration
Пример
Давайте создадим аннотацию, которая может применяться как к параметрам, так и к полям класса:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target({ElementType.PARAMETER, ElementType.FIELD})
@interface MyAnnotation
{
}
public class Main
{
@MyAnnotation
private String field = "12345";
public static void printValue(@MyAnnotation String value)
{
System.out.println(value);
}
public static void main(String[] args)
{
Main obj = new Main();
System.out.println(obj.field);
printValue("abcde");
}
}
Результат выполнения кода:
"12345"
"abcde"
Смотрите также
-
класс
ElementType,
который содержит типы элементов для аннотаций -
аннотация
Target,
которая задает область применения аннотации -
поле
METHOD,
которое указывает на применение к методам -
поле
FIELD,
которое указывает на применение к полям класса