本帖最后由 yedong07a 于 2013-5-11 11:44 编辑
注解类一:
public @interface MetaAnnotation{
String value();
}
注解类二:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation{
int[] arrayAttr() default {3,4, 5};
EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;
MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");
}
注解类二分别定义了数组类型、枚举类型、注解类型属性,
枚举和注释都是特殊的类,不能用new创建它们的实例对象,创建枚举的实例对象就是在其中增加元素,创建注解的实例对象直接用@放上一个标记即可。
应用了注解类的类,添加属性:
@ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"), arrayAttr=1)
public class AnnotationTest {
}
对“应用了注解类的类”进行反射操作的类:
public class AnnotationTest {
public static void main(String[] args) {
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation=AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation.arrayAttr().length);
System.out.println(annotation.lamp().nextLamp());
System.out.println(annotation.annotationAttr().value());
}
}
}
输出结果:
1
GREEN
flx |
|