Зміст
Анотацією @Target вказується, який елемент програми буде використовуватися анотацією. Так, в прикладі ця анотація має тип ElementType.TYPE, що означає що вона може бути оголошена перед класом, інтерфейсом або enum. Оголошення @Target в будь-яких інших місцях програми буде сприйняте компілятором як помилка.
package com.seostella.annotation.def;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Mammal {
String sound();
int color();
}
Інші можливі типи анотації @Target:
Також є можливість задати відразу кілька типів анотації. Наприклад:
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
Нижче приклади для кожного типу анотації:
PACKAGE - призначенням є цілий пакет (package):
@Annotation
package org.company.package;
TYPE - клас, інтерфейс, enum або інша анотація:
@Annotation
public class MyClass {}
METHOD - метод класу, але не конструктор (для конструкторів є окремий тип CONSTRUCTOR):
@Annotation
public void method() {}
PARAMETER - параметр методу:
public void method(@Annotation String param) {..}
CONSTRUCTOR - конструктор:
public class MyClass {
@Annotation
public MyClass() {..}
}
FIELD - поля-властивості класу:
@Annotation
private String classField;
LOCAL_VARIABLE - локальна змінна (зверніть увагу, що анотація не може бути прочитана під час виконання програми, тобто, даний тип анотації може використовуватися тільки на рівні компіляції як, наприклад, анотація @SuppressWarnings):
public void method() {
@Annotation int a = 0;
}
ANNOTATION_TYPE - інша анотація:
@Annotation
public @interface AnotherAnnotation {..}
У наступній статті буде розглянута анотація @Retention.
< | Анотації в Java. Введення | Анотації в Java. @Retention | > |