定义:
JDK1.5 引入注解类型通过注解类型,可以声明元数据。注解可以附加到各种程序实体(包括类型,方法,字段等),注解主要给编译器提供额外的信息,编译器可以同这些附加信息自动生成相应的代码,从而实现特定的功能。
注解类型:
1、java 类库中预定义的注解类型
2、自定义注解类型
1、预定义注解
其中分为:3 种标准注解类型:@Override、@Deprecated、@SupressWarning
4 种元注解类型:@Target、 @Retention @Documented @Inherited
1、@Override 注解类型
只能用于方法,不能用于其他类型上(接口,类等)
Override 为标记注解,没有参数。
2、@Deprecated 注解类型
在类库的设计当中,随着版本的升级,有些方法已经过时,用@Deprecated 进行注解。在使用过程中 编译器会显示提示信息(对标记的元素画删除线)。
@Deprecated 注解类型可以标记任何程序实体(包括方法,字段,类型等)。
@Deprecated 注解是标记注解没有形参。
3、@SuppressWarnings 注解类型
编译器除了提示错误信息之外,还提供警告信息,例如:当类型强转时,变量定义未使用时都会出现 编译时的警告信息。 该注解类型标记程序中的各种实体。 该注解为单一值注解,带一个参数(字符串数组)。数组的取值可以是一下几种:
1 deprecation:使用了过时的方法和类的警告
2 unchecked:执行了未检查的转换时警告
3 fallthrough:在 switch...case 语句中没有通过 break 直接进入下一条语句
4 path:在类路径,源文件路径中有不存在的路径时的警告
5 serial:在可序列化的类上缺少 serialVersionUID 定义时的警告
6 finally:任何 finally 子句不能正常完成时的警告
7 all: 关于以上所有的情况的警告
4、@Target 注解类型
@Target 为元注解,只能标记用户自定义的注解类型。表示该注解能用于什么地方,可以附加的程序实体。@Target 带一个枚举类型的数组参数。例:@Target({ElementType.METHOD})
1 ElementType.ANNOTATION_TYPE:注解类型的声明
2 ElementType.CONSTRUCTOR:构造方法的声明
3 ElementType.FIELD 域声明
4 ElementType.LOCAL_VARIABLE 局部变量声明
5 ElementType.METHOD 方法声明
6 ElementType.PACKAGE 包声明
7 ElementType.PARAMENT 参数声明
8 ElementType.TYPE 类,接口(包括注解类型)或 enum 声明
5、@Retention 注解类型
为元注解类型,只能标记用户自定义的注解类型该元注解表示的是注解保存的位置,带有一个枚举类型(RetentionPolicy)的参数。
参数类型:
1 RetentionPolicy.SOURCE:注解保留在源代码中(将被编译器丢弃)
2 RetentionPolicy.CLASS:注解保留在 class 文件中(将被 JVM 丢弃)
3 RetentionPolicy.RUNTIME:在运行期间保留注解,因此可以通过反射机制读取注解的信息。
6、@Documented 注解类型
该 元 注 解只 能 标 记 自 定义 注 解 类 型 。此 注 解 包 含 在 javadoc 中 ( 例 如 Deprecated 被 标 记 为 @Documented)。该元注解没有参数。
7、@Inherited 注解类型
该元注解只能标记用户自定义的注解类型。表示允许子类继承父类中的注解。通过反射机制读取注解的 信息时,如果该类型的注解没有注解类型信息,则会尝试读取从基类继承来的注解信息。该元注解没有类型参数。
2、自定义注解类型:
元注解类型
[注解修饰符] @interface 注解类型名{
注解体
}[;]