java之注解

补充java、javac和javadoc三者的区别

java:用来运行一个.class文件

javac:用来把.java文件编译为.class文件

javadoc:命令是用来生成自己API文档的。

// 打开cmd
javadoc 文档.java

(一)概念

注释:用文字描述程序的意思或功能,方便阅读程序,给程序员看的

注解:用来说明程序,给计算机看的,也叫元数据

格式:在需要添加注解的方法的上方 @注解名字

(二)注解的作用和分类

编写文档:通过代码里的标识元数据生成文档,如生成doc文档

代码分析:通过代码里面标识的元数据对代码进行分析,如使用反射

编译检查:通过代码里面标识的元数据让编译器能够实现基本的编译检查,如Override

(三)内置注解

Override:检查被改注解标注的方法是否是继承自父类(接口)的

Deprecated:将该注解标注的内容,标识已过时

在这里插入图片描述
SuppressWarnings:压制警告 一般传参all标识压制所有警告,一般写在类上,压制这个类的所有警告

在这里插入图片描述

(四)自定义注解

格式:public @interface 注解名{}

使用:@注解名称

本质:注解本质上就是一个接口,该接口默认继承Annotation接口

属性:“接口中可以定义的成员(抽象)方法”,因此在注解中,这些方法就是注解的属性。其属性有一下几个要求:

1、属性的返回值必须是基本数据类型 整形int String 枚举 注解 类型的 数组
在这里插入图片描述
2、定义了属性,在使用是需要给属性赋值

(1)如果很平常的定义一个属性,在使用注解的时候需要给初始值
在这里插入图片描述
(2)如果在定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值添加一个默认值。如(3)所用图中的 String name() default “ttt”; 所示

(3)如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略
在这里插入图片描述
(4)数组赋值比较特殊,值使用{}包裹,如果值只有一个,可以省略大括号
在这里插入图片描述
(5)枚举和注解定义属性的赋值

// Person枚举
public enum Person {
    p1,p3
}

// MyAnno2注解
public @interface MyAnno2 {
}

// 定义注解
public @interface MyAnno {
    枚举
    Person per();
    注解
    MyAnno2 myno2();
}

// 使用注解
@MyAnno(per=Person.p1,myno2=@MyAnno2)

3、元注解:描述注解的注解,在定义注解的时候使用。比较常用的是@Target

(1)@Target:描述注解能过作用的位置,如在方法上使用,或者在属性上使用,若想即作用在类上,也作用在方法上,还可以作用在成员变量上,则需要将这三种都写上,用逗号隔开。其属性有:

     TYPE:  可以作用于类上

     METHOD:  可以作用于方法上

     FIELD:  可以作用于成员变量上

在这里插入图片描述
(2)@Retention:描述注解被保留的阶段。自己定义注解一般会用RUNTIME。其属性有:

    SOURCE: 当前被描述的注解,不会保留到class字节码文件中,也不会被JVM读取到

    CLASS: 当前被描述的注解,会保留到class字节码文件中,不会被JVM读取到

     RUNTIME: 当前被描述的注解,会保留到class字节码文件中,并被JVM读取到

(3)@Documented:描述注解是否被抽取到api文档

(4)@Inherited:描述注解是否被子类继承

(五)在文档中使用注解

获取注解中定义的属性值(在一个使用了自定义注解的类中再在类中获取自定义注解的属性值)

1、获取注解定义的位置的对象(Class,Method,Field)

2、获取指定的注解getAnnotation(Class)

3、调用注解中的抽象方法获取配置的属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值