------- android培训、java培训、期待与您交流!---------
一、常用的基本注解
@SuppressWarnings
该注解的作用是阻止编译器发出某些警告信息。
它可以有以下参数:
deprecation:过时的类或方法警告。
unchecked:执行了未检查的转换时警告。
fallthrough:当Switch程序块直接通往下一种情况而没有Break时的警告。
path:在类路径、源文件路径等中有不存在的路径时的警告。
serial:当在可序列化的类上缺少serialVersionUID定义时的警告。
finally:任何finally子句不能完成时的警告。
all:关于以上所有情况的警告。
@Deprecated 该注解的作用是标记某个过时的类或方法。
@Override 该注解用在方法前面,用来标识该方法是重写父类的某个方法。
二、元注解
元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。
@Retention 它是被定义在一个注解类的前面,用来说明该注解的生命周期。
它有以下参数:
RetentionPolicy.SOURCE 注解仅存在于源码中,在class字节码文件中不包含
RetentionPolicy.CLASS 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
RetentionPolicy.RUNTIME 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。
@Inherited 允许子类继承父类中的注解
@Target 它是被定义在一个注解类的前面,用来说明该注解可以被声明在哪些元素,可能的值在枚举类 ElemenetType中
可用参数有:
ElementType.TYPE 接口、类、枚举、注解
ElementType.FIELD 字段、枚举的常量
ElementType.METHOD 方法
ElementType.PARAMETER 方法参数 //public void accept(@Person(age=87,gender="Man") int score){}
ElementType.CONSTRUCTOR 构造函数
ElementType.LOCAL_VARIABLE 局部变量
ElementType.ANNOTATION_TYPE 注解
ElementType.PACKAGE 包 packag注解必须在package-info.java 中声明
三、定义注解
public @interface xxx{
String color() default "blue"; //相当于类的变量,
String value();
int[] arrayAttr() default {3,4,4};
EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;
MetaAnnotation annotationAttr() default @MetaAnnotation("lhm"); //这个对象用@新建
}
@xxx(color="red",age=15,arrayAttr={2,3,4}) //对注释赋值
四、注解的读取
Method mainMethod = AnnotationTest.class.getMethod("main", String[].class);
ItcastAnnotation annotation2 = (ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class);
String[] anontationValue = annotation2.value();
------- android培训、java培训、期待与您交流!---------