**## 一:什么是注解?
1. Annotation(注解)是从JDK5.0开始引入的新技术
2. Annotation的作用:不是程序本身,可以对程序作出解释(这一点和注释(comment)没有区别),可以被其他程序(比如编译器等)读取
3. Annotation的格式:注解是以"@注释名"在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”)
4. Annotation在哪里使用:可以附加在package(包),class(类),method(方法),field(属性),
接口等上面,相当于给他们添加了一个额外的辅助信息,我们可以通过反射机制变成实现对这些元数据的访问
**二:内置注解
@Override:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,编译器就会发出错误提示。
@Deprecated:如果使用该注解的元素被调用,编译器就会发出警告信息。
@SuppressWarnings:关闭不当的编译器警告信息。通常取值有all/uncheaked/unchecked,deprecation
@SafeVarargs:在 Java 7 中加入用于禁止对具有泛型varargs参数的方法或构造函数的调用方发出警告。
@FunctionalInterface:Java 8 中加入用于表示类型声明为函数式接口
三:原注解
作用:负责注解其他注解
四个标准的meta-annotation类型
**1.@Target:描述注解的使用范围
实例如下:
其他参数如下
TYPE:类、接口(包括注释类型)或enum声明
FIELD:属性a
METHOD:方法声明
PARAMETER:正式的参数声明
CONSTRUCTOR:构造函数声明
LOCAL_VARIABLE:局部变量声明
ANNOTATION_TYPE:注解类型声明
PACKAGE:包
**
2.@Retention:标识需要在什么级别保存该注释信息,永固描述注解的生命周期
SOURCE(源代码)<CLASS()<RUNTIME(运行时有用,常用)
3.@Document:说明该注解将包含在javadoc中,文档注释
4.@Inherited:说明子类可以继承父类中的该注解
四:自定义注解来演示元注解的作用
其实很简单,常用的元注解@Target表示的就是你定义的这个注解可以什么上面,例如可以定义放在属性或方法上,他是数组,可以定义放在属性和方法上等,而@Retention则表示自定义的这个注解上面时候有效,通常都是设置为RUNTIME(运行时有效),注意观察下面的语法,当你的参数名是value时,在使用注解是value是可以默认不写的,而像name这种使用时就必须写参数名,default则是设置默认的值
五:反射操作操作注解
**