黑马程序员技术交流社区

标题: 注解的属性 [打印本页]

作者: 血马雄风    时间: 2015-8-27 10:09
标题: 注解的属性

注解的属性名与获取属性的方法名完全一样。
注解的属性的类型只能:基本类型、String、Class、枚举、注解,或这些类型的数组

@Retention(value = RUNTIME)
@Target(value=TYPE)
public @interface SourceAnnotation{
    String value() default "SourceAnnotation";
}


@Retention(value = RUNTIME)
@Target(value = {TYPE,METHOD})
public @interface MyAnnotation{
    //属性,有点怪
    String value();                       //字符串
    String color() default "blue";
    int[] arrayAttr() defalut {1, 2, 3}; //数组
    enum EnumLamp{RED, GRREN, YELLOW} lamp() default EnumLamp.RED;  //枚举 不会错把
    @SourceAnnotation sourceAnnotation() default @SourceAnnotation(value = MyAnnotation);
}


@MyAnnotation(sourceAnnotation=@SourceAnnotation("yang"), color="red", arrayAttr={1,2,3})
public class UseAnnotation{
   
    public void getAnnotationAttribute(){

        //MyAnnotation myAnnotation = new MyAnnotation(); //?

        if(Annotation.class.isAnnotationPresent(MyAnnotation.class)){
            MyAnnotation myAnnotation = (MyAnnotation)MyAnnotation.class.newInstance();
            System.out.println(myAnnotation.value());
            System.out.println(myAnnotation.color());
            System.out.println(myAnnotation.arrayAttr().length);
            System.out.println(myAnnotation.lamp());
            System.out.println(myAnnotation.sourceAnnotation());
        }  
    }  
}








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2