1.概述
- 1)正确的来说注解是反射的一部分,没有反射,注解无法正常使用
- 2)注解的功能:
-
- 01. 作为特定的标记,程序可以利用java的反射机制来了解你的类及各种元素上有无何种标记,针对不同的标记,就去做相应的事件。标记可以加在包,类,字段,方法,方法的参数以及局部变量上,使用注解有助于阅读程序,有利于实现程序的自动化检查和实现,简化编程。/
02. 额外信息的载体/以后javac编译器、开发工具或其他应用程序可以通过反射来了解你的类,以及各种元素上有无何种标记,看你有什么标记,就去执行相应的命令和干相应的事/
03. 在编译时进行格式检查。如@override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出/
04. 跟踪代码依赖性,实现替代配置文件功能,减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量/
05. Annotation是被动的元数据,永远不会有主动行为/但凡Annotation起作用的场合都是有一个执行机制/调用者通过反射获得了这个元数据然后根据它采取行动。/
06. 每当你创建描述符性质的类或者接口时,一旦其中包含重复性的工作,就可以考虑使用注解来简化与自动化该过程。/
- 01. 作为特定的标记,程序可以利用java的反射机制来了解你的类及各种元素上有无何种标记,针对不同的标记,就去做相应的事件。标记可以加在包,类,字段,方法,方法的参数以及局部变量上,使用注解有助于阅读程序,有利于实现程序的自动化检查和实现,简化编程。/
3)分类描述:
OverAll:元注解的作用就是负责注解其他注解
-
- 3.1)【@target】说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
3.2) 【Retention】定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。使用这个meta-Annotation可以对 Annotation的“生命周期”限制。作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)
有三种取值(代表三个阶段):
- 3.1)【@target】说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
- RetentionPolicy.SOURCE:保留注解到java源文件阶段,例如Override、SuppressWarnings
- RetentionPolicy.CLASS:保留注解到class文件阶段,例如
- RetentionPolicy.RUNTIME:保留注解到运行时阶段即内存中的字节码,例如Deprecated
*/
【一般来说,源码状态运行和编译状态运行的注解往往和编译器相关,比如报错,警告,类编译参数等,】
3.3) 【@Documented】是生成说明文档时把类的解释添加进去。
3.4) 【注解只有方法,没有字段,因为注解也是一个interface,只不过前面加了一个@符号,且定义的方法无法实现,类似C++中的纯虚函数】
3.5) @Deprecated//自定义:备注过时的方法信息 3.6) @SuppressWarnings(“deprecation”)//阻止警告
3.7) @Override告诉编译器这个方法是一个重写方法(描述方法的元数据),如果父类中不存在该方法,编译器便会报错,提示该方法没有重写父类中的方法。
2.Demo
- 2.1)
- 2.2)
- 2.3)
- 2.4)
- 2.5
- 2.1)
参考文档:
https://www.zhihu.com/question/24401191
http://www.importnew.com/10294.html
http://www.cnblogs.com/ITtangtang/p/3974531.html