java的注解是Java中非常好用的一个功能点。基本所有的java框架都会用到。在我们日常的工作中,如果善于使用自定义注解,讲给我们节省下大量的时间。
代码示例:
import java.lang.anno;
import java.lang.anno;
import java.lang.anno;
import java.lang.anno;
import java.lang.annoPolicy;
import java.lang.anno;
@Documented
@Targe)
@Inherited
@Retention)
public @interface MyDemo{
String author() default 'yunsheng';
}
对自定义注解进行注解的称为元注解。常用的元注解有四类:
@Documented :表明此注解会被javadoc等类似工具识别,并保留在API文档中。
@Target:声明这个注解可使用的范围。可以打开ElementType看下,分别是:1)类,接口,注解,enum; 2)属性域;3)方法;4)参数;5)构造函数;6)局部变量;7)注解类型;8)包
@Inherited:继承。是说如果你在父类上使用了被@Inherited注解的注解A。那么该类的子类也会继承该注解A。
@Retention:注解的存在范围。
有三个范围:
Re 只存在源码级别,被编译器抛弃(@Override就是此类);
Re 会被编译器保留在编译后的类文件中,但是会被虚拟机丢弃;
Re 保留在运行时,可以被反射读取。这个注解还是比较重要的,我们一般是会使用RUNTIME级别,因为我们需要通过反射读取到这个注解。
使用:
使用起来其实很简单,就是通过反射拿到注解信息。
如:Method的几个方法:
isAnnotationPresen):方法判断是否使用了xx注解
getAnnotation):获取具体的注解对象实例
getDeclaredAnnotations():获取所有注解,注意反射方法中Declared都是获取自身的,不包括继承来的。
getAnnotations():获取包括继承来的注解。这里就要看父类的注解是否是可继承的了。