Зміст
У цій статті мова піде про четверту (останню) стандартну анотацію для інших анотацій, а саме, про анотацію @Inherited. Як випливає з назви, ця анотація означає, що вона автоматично успадковується в дочірніх класах описаного анотацією класу.
Складний для розуміння текст легко можна спростити за допомогою наступного прикладу.
Припустимо, у нас є анотація @Mammal (ссавець):
package com.seostella.annotation.def;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Target(ElementType.TYPE)
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Mammal {
String sound();
int color();
}
@Mammal позначена анотацією @Inherited. Тепер скористаємося цією анотацією в класі Giraffe:
package com.seostella.annotation.domain;
import com.seostella.annotation.def.HasHorn;
import com.seostella.annotation.def.Mammal;
@Mammal(color = 0xFFA844, sound = "uuuu")
public class Giraffe {
@HasHorn
public void drawHead() {
}
}
Створимо клас, успадкований від Giraffe:
package com.seostella.annotation.domain;
public class FeatureGiraffe extends Giraffe{
}
Тепер клас FeatureGiraffe містить анотацію @Mammal класу Giraffe, тобто, наступну анотацію:
@Mammal(color = 0xFFA844, sound = "uuuu")
Це відбувається завдяки анотації @Inherited.
У наступній (останній) статті з даного циклу буде розглянуто як в процесі виконання програми отримати інформацію про анотації, що використовуються разом з класом якщо тип анотації RetentionPolicy.RUNTIME.
< | Анотації в Java. @Documented | Отримання інформації про анотації | > |