A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yedong07a 中级黑马   /  2013-5-6 20:33  /  1395 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
收藏了,值得学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马