Содержание
В 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 | > |