17.12.28
注解,我的理解,在源码期、编译期、运行期,对被注解的代码段的标识。使得底层程序对被标识代码段进行特殊处理。
注释是给人看的。注解是给底层系统看的,注解是描述代码的代码,注解能够被编译器解析,注解处理工具在运行时也能解析注解。
——————————————
元注解:注解的注解。负责注解其他注解。有4个。
1.@Target,说明了Annotation所修饰的对象范围。CONSTRUCTOR构造器、FIELD域、LOCAL_VARIABLE局部变量、METHOD方法、PACKAGE包、PARAMETER参数、TYPE类、接口(包括注解类型) 或enum声明。
2.@Retention,定义了该Annotation被保留的期间RetentionPoicy枚举的SOURCE源文件保留、CLASS编译期、RUNTIME运行期。
3.@Documented,描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。
4.@Inherited,阐述了某个被标注的类型是被继承的。
——————————————
自定义
https://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
这篇比较好。
——————————————
Java自带的常用的三个注解
- @Override注解。这个注解可以用来修饰方法,并且它只在编译时有效,在编译后的class文件中便不再存在。
这个注解可以用来修饰方法,并且它只在编译时有效,在编译后的class文件中便不再存在。
2、@Deprecated 注解。从它的定义我们可以知道,它会被文档化,能够保留到运行时,能够修饰构造方法、属性、局部变量、方法、包、参数、类型。这个注解的作用是说明被修饰的程序元素已被“废弃”,不再建议用户使用。
3、@SuppressWarnings注解。 它能够修饰的程序元素包括类型、属性、方法、参数、构造器、局部变量,只能存活在源码时,取值为String[]。它的作用是告诉编译器忽略指定的警告信息。
deprecation:忽略使用了废弃的类或方法时的警告;
unchecked:执行了未检查的转换;
fallthrough:swich语句款中case忘加break从而直接“落入”下一个case;
path:类路径或原文件路径等不存在;
serial:可序列化的类缺少serialVersionUID;
finally:存在不能正常执行的finally子句;
all:以上所有情况产生的警告均忽略。
以上摘自:https://www.zhihu.com/question/47449512/answer/107459084
——————————————
注解的解析:
https://www.daidingkang.cc/2017/07/18/java-reflection-annotations/
这篇比较好。
网友评论