详解Java进阶知识注解
程序员文章站
2022-04-28 17:07:51
一、注解的概念1、注解官方解释注解叫元数据,一种代码级别的说明,它是jdk1.5及以后版本引入的一个特性,与类、接口、枚举在同一个层次,它可以声明在包、类、字段、局部变量、方法参数等的前面,用来对这些...
一、注解的概念
1、注解官方解释
注解
叫元数据,一种代码级别的说明,它是jdk1.5及以后版本引入的一个特性,与类、接口、枚举在同一个层次,它可以声明在包、类、字段、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。
注解的作用分类
- 编写文档:通过代码里表示的元数据生成文档【生成doc文档】
- 代码分析:通过代码里表示的元数据进行分析【使用反射】
- 编译检查:通过代码里表示的元数据让编译器能够实现基本的编译检查【override】
注解按照运行机制分类
- 源码注解:注解只在源码中存在,编译成.class文件之后就不存在了
- 编译时注解:注解在源码存在的基础上,也会在.class文件中存在,但是在运行阶段中就不存在了,例如:@override
- 运行时注解:注解在运行阶段依然存在,且能够影响程序的运行过程,例如:@autowired
2、注解与注释的区别
(1)注解:用于描述代码,说明程序,主要目的是为了给计算机看,且能够影响程序的运行。
(2)注释:用于描述代码的作用和一些关键性的知识点,使用文字描述程序,是为了给程序员观看,以此来使程序员能够以最快的时间了解被注释的代码。
二、内置注解与元注解
1、常用的内置注解
- @override:检测该注解标记的方法是否继承自父类;
- @deprecated:说明被标记的内容已过时,暗示着在不久之后可能会被更新抹除;
- @suppresswarnings:压制警告,就是被标记的部分不会产生警告,常用的参数:@suppresswarnings(“all”);
- @safevarargs:参数安全类型注解,它的目的就是提醒开发者不要用参数做一些不安全的操作,它的存在会阻止编译器产生unchecked这样的警告;
2、常用的元注解
元注解:用于描述注解的注解,在创建注解时使用
1. @target属性值:
- elementtype.type:能修饰类、接口或枚举类型
- elementtype.method:能修饰方法
- elementtype.field: 能修饰成员变量
- elementtype.parameter:能修饰参数
- elementtype.constructor:能够修饰构造器
- elementtype.annotation_type:能够修饰注解
- elementtype.package:能够修饰包
- elementtype.local_variable:能够修饰局部变量
2.@retention属性值:
- retentionpolicy.source:注解只在源码中存在,编译成class之后就没了
- retentionpolicy.class:注解在源码和class中都存在,运行时就没了,这个是retention的默认值
- retentionpolicy.runtime: 注解在源码、class、运行时都存在,如果要使用反射一定要定义为这种类型
3.@documented:该注解的作用就是表示此注解标记的注解可以包含到javadoc文件中去
4.@inherited:描述注解是否能够被子类所继承
三、自定义注解
1、自定义注解基础知识
1.格式:
2.注解本质:注解的本质上就是一个接口,该接口默认继承annotation
3.属性:接口中可以定义的内容(成员方法、抽象方法)
属性的返回值:
- 八种基本数据类型
- 字符串类、接口、枚举
- 注解
- 以上类型的数组
属性赋值注意事项
- 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,就可以不进行属性的赋值,否则都必须给属性赋值
- 如果只有一个属性需要赋值的话,并且属性的名称是value,则使用注解给属性赋值时,value可以省略,直接定义值就可以了
- 数组赋值时,值需要使用{}包裹,如果数组中只有一个值,则{}可以省略不写
2、演示自定义注解的使用
自定义注解annotation
使用以上注解的类testannotation
运行结果
3、演示注解在程序中的作用
两个方法:
- 类对象调用
isannotationpresent(class<? extends annotation> annotationclass)
判断是否应用了某个注解 - 通过getannotation()方法获取annotation对象,或者getannotations()方法获取所有应用在该类上的注解
1.创建自定义注解
2.创建实体类
3.创建测试类,测试注解
4.运行结果
以上就是详解java进阶知识注解的详细内容,更多关于java注解的资料请关注其它相关文章!
上一篇: ThinkPHP3.2.3框架邮件发送功能图文实例详解
下一篇: python输出带颜色字体实例方法