Аннотации в Java. Введение

мая
19
2012
Метки: annotation java

Содержание

В Java есть полезный способ добавления мета-информации к классу, используя аннотации. В этой статье пойдет речь о создании собственной аннотации.

Главной задачей аннотаций является статическое расширение классов (именно классов, а не объектов), путём добавления метаданных в класс, без изменения его методов и свойств. Как правило, аннотации являются естественным способом взаимодействия с некоторыми из библиотек или фреймворков (например, Hibernate или Spring). То есть, добавляя в свои классы аннотации, которые определены в подобных библиотеках, Вы, тем самым, указываете библиотеке использовать именно те классы, методы или свойства, которые следуют за аннотацией. При этом, Ваш код не поддается никаким изменениям.

Основные задачи аннотации:

Сразу перейдем к практике - создадим аннотацию Mammal (млекопитающее). Это делается очень просто:


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();
}

Единственная разница между интерфейсом и аннотацией - это символ @ перед ключевым словом interface. Аннотация может содержать свойства (в примере свойствами являются sound и color) или не содержать их.

Несколько ограничений, накладываемых на аннотации:

Аннотации могут использоваться со следующими элементами программы:

Внимание! Аннотации появились в языке Java с появлением версии 1.5. В версиях ниже 1.5 нет возможности использовать аннотации.

Также методы аннотаций могут иметь значения по умолчанию, которые можно задать, используя ключевое слово default:


public @interface Mammal {
	String sound();

	int color() default 0xffffff;;
}

А следующим кодом добавляем в класс Giraffe аннотацию Mammal:


package com.seostella.annotation.domain;

import com.seostella.annotation.def.Mammal;

@Mammal(color = 0xFFA844, sound = "uuuu")
public class Giraffe {
}

В следующих частях статьи детально рассмотрим создание аннотаций.

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

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

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