Аннотации в Java. @Target

мая
20
2012
Метки: @target annotation java

Содержание

Аннотацией @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 >

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии