Аннотации в 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 Получение информации об аннотациях >

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

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