注解的一些简单理解,也不知道具体学了个啥,反正学着玩

注解

注释:用文字描述程序,给程序员看的

 

##### 概念:

给计算机看的程序说明

这是1.5之后的新特性

使用注解的时候:@注解名称

 

#### 注解作用:

* 编写文档:通过代码里标识的注解生成文档,【例:生成文档doc文档】
jdk文档就是这样生成的

* 代码分析:通过代码里标识的注解对代码进行分析【例:使用反射】

* 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【例:Override】
比如重写toSting方法

 

 

注解的类型

 

## 1,JDK中预定义的一些注解

 

    ### @Override

检测被标注的方法是否是继承父类(接口)的

@Deprecated

该注解标注的内容,表示已过时

@SuppressWarnings

压制警告

一般传递参数"all",@SuppressWarnings("all"); 并且一般是放在类名上

 

2,自定义的注解

 

格式:
元注解
public @interface 注解名{
  属性列表
}


通过把上面那排代码使用javac命令编译,再通过javap命令反编译,可得到一行代码:
public interface 注解名 extends java.lang.annotation.Annotation{}

所以注解的本质是:
本质:注解本质上就是一个接口,该接口默认继承Annotattion接口


属性: 接口可以定义的成员方法
要求:
1,属性的返回值类型:
* 基本数据类型
* String
* 枚举
* 注解
* 以上类型的数组
* 无返回值和其他类型都是不可以的!!!
2,定义了属性,在使用的时候需要给属性赋值
* 如果定义属性时,使用default关键字给属性默认初始化,在使用时可以不给属性赋值
* 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值
* 数组赋值时,值使用{}包裹,如果数组中只有一个值,大括号可以省略
    #### 元注解:用于描述注解的注解
  • @Target:描述注解能够作用的位置

    @Target(value={ElementType.TYPE})表示该注解只能作用于类上
    @Target(value={ElementType.METHOD})表示该注解只能作用于方法
    @Target(value={ElementType.FIELD})表示该注解只能作用于成员变量
  • @Retention:描述注解被保留的阶段

    @Retention(RetentionPolicy.RUNTIME):表示被描述的注解会被保留到class字节码文件中,并被JVM读取到
  • @Documented:描述注解是否被抽取道api文档中

     

    • @Inherited:描述注解是否被子类继承

 

 

3,在程序中使用注解

获取在程序中 获取定义的属性值

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

2,获取指定的注解

getAnnotation(class)

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

 

 

判断这个方法上是否有某个注解:

Mehrod类型.isAnnotationPresent(注解名.class)——返回值是布尔型

 

 

小结:

1,大多数时候,我们会使用注解,而不是自定义注解

2,注解给谁用?

  • 编译器

  • 给解析程序用

    3,注解不是程序的一部分

posted @   牛杂刻师傅  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示