注解:注解就是一种标记,编译器 开发工具或其它程序可以用反射了解类及各种元素上有无何种标记,并根据标记,去执行相应的操作.
注解可以加在报包 类 字段 方法以及局部变量.
注解分类:
@Deprecated 过时
@Override 重写
@SuppressWarnings 压缩警告
自己定义注解并添加属性:
基本形式:
注解相当于一个接口,通过添加抽象方法添加属性
public @interface MyAnnotation {
public abstract int number();
}
自定义注解的使用
@MyAnnotation (number=1)
特殊形式:
public @interface MyAnnotation {
public abstract int number() default 1;//default 1添加属性的默认值
public abstract int value();
}
当多个方法中有方法名为value的方法,并且只需提供此方法一个参数时,直接写参数
@MyAnnotation (1);
添加数组属性
public @interface MyAnnotation {
public abstract int[] numberarr();
}
@MyAnnotation (numberarr={1,2})
当数组中只有一个元素时,可以省略大括号
@MyAnnotation (numberarr=1)
添加枚举属性
public @interface MyAnnotation {
EnumTest.WeekDay.day();//EnumTest.WeekDay在EnumTest类中有个WeekDay枚举
}
@MyAnnotation(day=EnumTest.WeekDay.MON)
添加注解属性
public @interface MyAnnotation {
public abstract MetaAnnoation an();//MetaAnnoation为一个注解,属性为public abstract String show()
}
@MyAnnotation(an=@MetaAnnoation(show="abc"))//@MetaAnnoation(show="abc")相当于
//public @interface MetaAnnoation的子类对象
添加Class属性
public @interface MyAnnotation {
public abstract Class c();
}
@MyAnnotation(c=String.class)
注解可以加在报包 类 字段 方法以及局部变量.
注解分类:
@Deprecated 过时
@Override 重写
@SuppressWarnings 压缩警告
自己定义注解并添加属性:
基本形式:
注解相当于一个接口,通过添加抽象方法添加属性
public @interface MyAnnotation {
public abstract int number();
}
自定义注解的使用
@MyAnnotation (number=1)
特殊形式:
public @interface MyAnnotation {
public abstract int number() default 1;//default 1添加属性的默认值
public abstract int value();
}
当多个方法中有方法名为value的方法,并且只需提供此方法一个参数时,直接写参数
@MyAnnotation (1);
添加数组属性
public @interface MyAnnotation {
public abstract int[] numberarr();
}
@MyAnnotation (numberarr={1,2})
当数组中只有一个元素时,可以省略大括号
@MyAnnotation (numberarr=1)
添加枚举属性
public @interface MyAnnotation {
EnumTest.WeekDay.day();//EnumTest.WeekDay在EnumTest类中有个WeekDay枚举
}
@MyAnnotation(day=EnumTest.WeekDay.MON)
添加注解属性
public @interface MyAnnotation {
public abstract MetaAnnoation an();//MetaAnnoation为一个注解,属性为public abstract String show()
}
@MyAnnotation(an=@MetaAnnoation(show="abc"))//@MetaAnnoation(show="abc")相当于
//public @interface MetaAnnoation的子类对象
添加Class属性
public @interface MyAnnotation {
public abstract Class c();
}
@MyAnnotation(c=String.class)