注解

一、注解概述:

  • 从JDK5.0开始,JAVA增加了对元数据(MetaData)的支持,也就是Annotation(注解)。
  • Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。
  • Annotation可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被保存在Annotation的“name = value”对中。
  • 未来是注解的天下,未来的开发模式都是基于注解的,一定程度上说:框架 = 注解+反射+设计模式。

 

二、注解的使用:

 1.生成文档相关的注解

2.在编译时进行格式检查(JDK内置的三个基本注解)

  @override:限定重写父类方法,该注解只能用于方法

  @Deprecated:用于表示所修饰的元素(类,方法等)已过时。通常是因为所修饰的结构危险或者有更好的选择。

  @SuppressWarnings:抑制编译器警告。

3.跟踪代码依赖性,实现替代配置文件功能。比如servlet中的web.xml配置文件中的url可以用一个注解@WebServlet简单实现:

 

三、自定义注解:

参照@SuppressWarnings定义:

  • 注解声明为:@interface
  • 内部定义成员,通常使用value表示
  • 可以指定成员的默认值,使用default定义
  • 如果自定义注解没有成员,表明是一个标识作用。

如果注解有成员,在使用注解时,需要指明成员的值。

自定义注解必须配上注解的信息处理流程(使用反射)才有意义。

 

四、JDK提供的四种元注解:

元注解的意思就是对现有的注解进行解释说明的注解

1.Retention:指定所修饰的Annotation的生命周期:SOURCE(javac编译后死亡)\CLASS(默认行为,编译后仍存在,运行前死亡)\RUNTIME(加载到内存,只有声明为RUNTIME生命周期的注解,才能通过反射获取)。

 2.Target:用于指定被修饰的Annotation能用于修饰哪些程序元素

一般来说,自定义注解都会指明这两个元注解

3.Documented:表示所修饰的注解在被javadoc解析时,保留下来。

4.Inherited:被它修饰的Annotation将具有继承性。

 

五、JDK8中注解的新特性:

1.可重复注解:①在需要重复的注解上声明@Repeatable,成员值为需要重复的注解+s.class

         ②需要重复的注解的Target和Retention等元注解和重复的注解+s相同(也就是定义重复注解的注解需要和被定义的注解这两个元注解相同)。

2.类型注解:

ElementType.TYPE_PARAMETER表示该注解能写在类型变量的声明语句中(如泛型声明)

ElementType.TYPE_USE表示该注解能写在使用类型的任何语句中,

posted @ 2019-05-16 19:18  黑暗之魂DarkSouls  阅读(106)  评论(0编辑  收藏  举报