注解

大一菜鸡的个人笔记,欢迎交流。

注解

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 说明该注解会自动被另外一个注解继承

你可能感兴趣的:(笔记)