Зміст
В 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 | > |