什么是注解
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
解决了什么问题
Java EE应用程序中存在各种配置文件,包括框架中。有很多xml格式的配置文件。这些配置文件需要与源代码保存同步,否则的话就可能出现错误。
把同一份信息保存在两个地方,总是个坏的主意。理想的情况是在一个地方维护这些信息就好了。其它部分所需的信息则通过自动的方式来生成。
JDK 5中引入了源代码中的注解(annotation)这一机制。注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。
用途分类
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
内置注解
@Override
@Deprecated
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
自定义注解
- 创建注解类型的时候即不使用class也不使用interface,而是使用@interface
- 元注解
@Target({METHOD,TYPE}) 表示这个注解可以用用在类/接口上,还可以用在方法上
@Retention(RetentionPolicy.RUNTIME) 表示这是一个运行时注解,即运行起来之后,才获取注解中的相关信息,而不像基本注解如@Override 那种不用运行,在编译时eclipse就可以进行相关工作的编译时注解。
@Inherited 表示这个注解可以被子类继承
@Documented 表示当执行javadoc的时候,本注解会生成相关文档
请在学习完本知识点最后一个步骤解析注解之后,再查看 元注解,做更详尽的学习。
元数据
Metadata is data [information] that provides information about other data
为其他数据提供信息的数据
元注解
元注解有这么几种:
@Target
@Retention
@Inherited
@Documented
@Repeatable (java1.8 新增)
注解分类
按照作用域分
根据注解的作用域@Retention,注解分为
RetentionPolicy.SOURCE: Java源文件上的注解
RetentionPolicy.CLASS: Class类文件上的注解
RetentionPolicy.RUNTIME: 运行时的注解
按照来源分
按照注解的来源,也是分为3类
- 内置注解 如@Override ,@Deprecated 等等
- 第三方注解,如Hibernate, Struts等等
- 自定义注解,如仿hibernate的自定义注解