Анотації в Java. @Inherited

травня
23
2012
Мітки: @inherited annotation java

Зміст

У цій статті мова піде про четверту (останню) стандартну анотацію для інших анотацій, а саме, про анотацію @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 Отримання інформації про анотації >

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі