注解的作用
个人理解:注解可以加在类或者方法上和其它类或者方法形成区分,通过反射判断类上是否有这个注解来进行特殊处理。
自定义一个简单注解
@Documented
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD,ElementType.FIELD,ElementType.TYPE})
@Inherited
public @interface SimpleAnnotation {
String name() default "";
int id() default 1;
}
通过使用@interface 关键字定义一个注解,注解默认实现java.lang.annoation包下的Annoation接口。下面,我们来介绍一下程序中涉及到的四个JDK1.5中的四个元注解。
-
@Documented 注解用来表示定义的注解可以被文档工具使用
-
@Retention 注解表示定义的注解保留时间,其中的RetentionPolicy是一个枚举类。其中包含三个值按照范围从大到小分别为 RUNTIME、CLASS、SOUECE
RUNTIME:表示注解保留到运行时期(该级别可以用反射获取到加到类上的注解)
CLASS:表示注解保留到class文件中
SOURCE: 表示注解保留源文件中 -
@Target 注解表示自定义注解可以添加在类中的位置,ElementType是一个枚举类。下图说明各个枚举代表的含义
-
@Inherinted 子类继承父类同时继承父类的注解
-
java 8 新添加了@ Repetable注解表示自定义注解可以重复添加到一个类上
注解的作用
例如可以自定义注解@LoginRequired对用户访问的某些资源进行权限检查。
框架的灵魂 注解+反射+设计模式,注解和反射搭配可以起到很大的作用