大一菜鸡的个人笔记,欢迎交流。
注解
Java注解(Annotation),又称Java标注、元数据,是Java5.0引入的一种注释机制。
Java语言中的类、方法、变量、参数和包等都可以被标注。
(1)注解和注释
注解:说明程序的,给计算机看的。注解不需要分号.注解本质就是一个接口,该接口默认继承Annotation接口。
注释:用文字描述程序的。给程序员看的。
(2)注解的作用
- 编写文档:通过代码里标识的注解生成文档(javadoc api文档)
- 代码分析:通过代码里表示的注解对代码进行分析
- 编译检查:通过代码里表示的注解让编译器能够实现基本的编译检查(如OverRide)
(3)JDK中注解的预定义
a.Override
检测被该注解标注的方法是否是继承自父类(接口)的,若是自己定义的,则会报错。
b.Deprecated
该注解标注的内容,表示已过时,可兼容低版本的功能。调用过时方法会出现一条横线表示已过时
c.SuppressWarnings
压制警告,可写在方法上面,也可写在类上。
@suppressWarnings(“all”)
(4)自定义注解
public @interface 注解名称{}
a.注解的成员方法就是注解的属性
b.属性的返回值只有下列取值
-
基本数据类型
-
String
-
枚举
-
注解
-
以上类型的数值
public @interface a()
{
int b;
String name() default"张三";
}
@a(b=12)
c.属性的特点
- 定义属性时,使用defalut关键字给属性默认初始化值,可以不进行属性的赋值
- 只有一个属性需要赋值,且属性名称为value则可以直接写值,而不写value=
- 如用枚举类型 如person per(),则使用时可写a(per = person.P1)
- 如用属性为注解类型 则 =@注解名
- 如果数组中只有一个值 则数组中的{}可以省略
d.元注解
用来描述注解的注解
在定义注解时上面使用的注解
- @Target:描述注解能起作用的位置
- @Retention:描述注解被保留的阶段
- @Documented:描述注解是否被抽取到api文档中
- @Inherited:描述注解是否被子类继承
实例
Target
@Target(value={ElementType.Type})//只能作用在类上
public @interface My{//那么My注解只能作用在类上
}
Target的取值(较常用)
-
TYPE 类
-
METHOD 方法
-
field成员变量
Retention的取值(较常用)
@Retention(RetentionPolicy.RUNTIME)
RUNTIME:一般都使用这个 说明当前这个注解会被保留到class字节码文件中,并被JVM读取到。
CLASS:会被保留到class字节码中,不会被读取。
SOURCE:不会被保留到字节码文件中。
Documented的取值
@Documented 说明这个注解可被抽取到JavaDoc文档中去
Inherited的取值
@Inherited 说明该注解会自动被另外一个注解继承

650

被折叠的 条评论
为什么被折叠?



