略
注解
JDK1.5后的新特性,格式为@XXX
.写于包,类,字段,局部变量,方法的前面.可以存在于SOURCE/CLASS/RUNTIME阶段.
注解的作用:
- 编写文档:通过代码里标识的元数据生成文档。
- 代码分析:通过代码里标识的元数据对代码进行分析。
- 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查
Java中基本内置注解
@Override
标记该方法是覆盖超类的方法,乱写编辑器会报错.
@Deprecated
用于标记该方法已经过时,编辑器会在该方法上显示删除线.
@SuppressWarnings
忽略编辑器的警告信息.(参数可以限定忽略那些警告信息)
自定义注解
注解声明
使用
@interface
来声明注解,类似于class
和interface
.注解本质分析
生成的class反编译后发现,注解本质是一个接口,拓展了java.lang.annotation.Annotation接口.
注解成员
注解可以有属性(不使用)
也可以有注解属性,例如:
1
public String show();
注解类型
- 基本类型
- String
- 枚举
- 注解类型
- Class类型
- 以上类型的一维注解类型
注解属性的使用
- 单个注解:
@MyAnnotation(str="aaa").
- 多个注解:
@MyAnnotation(str="aaa",i=10).
- 声明时给注解类型默认值:
double d() default 1.23
. - 如果属性是数组类型:
@MyAnnotation(strs={"1","2","3","4"...})
,数组仅仅有一个值时可以省略{ }
号. - 给属性
value
赋值:@MyAnnotation("aaa")
,直接写进去前提是没有其他属性值. - 给数组数据
value
赋值:@MyAnnotation({"a","b","c"})
,前提是没有其他属性值.
- 单个注解:
元注解
什么是元注解
用于修饰注解的注解,可以描述注解在什么范围,什么阶段使用.
四个元注解
@Retention
(必须写)指定注解信息在哪个阶段存在 Source | Class | Runtime
分别代表存在于编译阶段,存在于解析执行阶段,存在于JVM中.
@Target
(必须写)指定注解修饰对象的Type,有类,接口,成员变量,方法等
1
2
3
4
5
6
7
8ANNOTATION_TYPE 注解类型声明
CONSIRUCTOR 构造方法声明
FIELD 字段声明(包括枚举常量)
LOCAL_VARIABLE 局部变量声明
METHOD 方法声明
PACKAGE 包声明
PARAMETER 参数声明
TYPE 类,接口或枚举声明@Documented
使用该元注解修饰,该注解信息可以生成到javadoc文档中.
@Inherited
如果一个注解使用该元注解修饰,应用注解目标的子类会自动继承该注解.
自定义注解的使用
需要使用到反射来使用:
示例(获得数据库连接):
1 |
|