注解(初学)

注解:

  • 概念:说明程序的。给计算机看的。
  • 注释:用文字描述程序的。给程序员看的。
  • 定义:注解(Annotation),也叫元数据。以中代码级别的说明。他是JDK1.5及以后版本引入的一个新特性,与类、接口、枚举是在同一个层次。他可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
  • 概念描述
  1. JDK1.5之后的新特性

  2. 说明程序的

  3. 使用注解:@注解名称

  • 作用分类:

  • 编写文档:通过代码里标识的注解生成文档【生成文档doc文档】
    /**+回车
    在这里插入图片描述
    把类复制一份,新建一个文件夹,粘贴,为了方便抽取,把包删去,打开命令行,用javadoc命令
    在这里插入图片描述
    抽取出来的信息,然后打开index.html
    在这里插入图片描述
    在这里插入图片描述
    有乱码是编码没有统一

  • 代码分析:通过代码里表示的注解对代码进行分析【使用反射】

  • 编译检查:通过代码里表示的注解让编译器能够实现基本的编译检查【Override】

学习

  • JDK预定义的一些注解

*@Override:检测被该注解标注的方法是否继承自父类(接口)的

*@Deprecated:将该注解标注的内容,表示已过时

*@SuppressWarnings:压制警告

		 一般传递参数all  @SuppressWarnings("all")*
  • 自定义注解

  • 先看一下Deprecated的源码

在这里插入图片描述
格式
*元注解:
public @interface 注解名称{}
模仿着写一下,定义一个自己的注解
在这里插入图片描述
此时可以使用它
在这里插入图片描述
那这玩意到底是什么意思呢!通过反编译进行操作。它最终会被编译成字节码文件,就反编译看一下是什么。在文件夹中新建一个文件。起名为MyAnno.java把模仿注解代码粘贴进来,用命令行先编译一下,再反编译(javap MyAnno.class)。在这里插入图片描述
*本质:
在这里插入图片描述
注解本质上就是一个接口,该接口默认继承Annotation接口。
*属性:接口中可以定义的抽象方法
1.要求:属性的返回值类型
1)基本数据类型
2)String
3)枚举
4)注解
5)以上类型的数组
2.定义了的属性,在使用时需要赋值。
1)也可以在定义的时候后面添加default“”,设置默认值,不赋值时就是默认值。
在这里插入图片描述
2)如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。比如SuppressWarnings()。
3)数组赋值时,使用{}进行包裹。如果数组中只有一个值,则{}可以省略。
*元注解:用于描述注解的注解
在这里插入图片描述
*@Target:描述注解能够作用的位置
*@Retention:描述注解被保留的阶段
*@Documented:描述注解是否被抽取到api文档中
*@Inherited:描述注解是否被子类继承
先看下Target的源码在这里插入图片描述
就一个属性,是value。类型是ElementType,再看下ElementType在这里插入图片描述
需要知道前三个取值。
ElementType取值:
*TYPE:可以作用于类上
*METHOD:可以作用于方法上
*FIELD:可以作用于成员变量上

@Retention
在这里插入图片描述
里面的value也是枚举类型
在这里插入图片描述
@Retention:描述注解被保留的阶段
*@Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到字节码文件中,并被JVM读取到。(最常用)如果是CLASS,则不会被JVM读取到,如果是SOURCE,则注解不会存在于字节码文件这个i不过。

  • 在程序中使用(解析)注解:获取注解中获取的属性值
    在这里插入图片描述

注解大多是用来替换配置文件的。老案例
在这里插入图片描述
以前用配置文件
在这里插入图片描述
现在用注解,定义一个注解,描述需要执行的类名和方法名在这里插入图片描述
在这里插入图片描述
通过选中这一行代码,就会把这个类对应的对象创建,并且返回在这里插入图片描述
接着补全
在这里插入图片描述
然后可以拿到注解中定义的属性值。剩下的代码就和配置文件中使用的代码一模一样。在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值