网站首页 > java教程 正文
介绍
注解(Annotation),也叫元数据,标签。是 JDK 1.5 及以后版本引入的一个特性,与类、接口、枚举是在同一层次。可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明
注解的另一个称呼注释,很容易和 java 的代码注释混淆,是一种代码级别的说明,是给程序看的,可以看成一个标签。有特殊含义,可能执行特定的操作等等。
JDK 四大内置注解
@Override 注解
用于标识方法重写,例如当前类中重写 tostring() 方法;
@Deprecated 注解
用于标识方法已过时;
@SuppressWarings 注解
用于抑制编译器警告,直白地讲就是消除警告线,但编译器里关于警告的信息还在。例如在 Eclipse 中: List listt = null;
@SafeVarargs 注解
抑制堆污染警告(单独警告),直白地讲就是使用泛型和可变参数搭配使用将会产生的编译器警告。可以使用 @SuppressWarnings 消除警告,后来 Java 7 引入了新的注解,就是 @SafeVarargs。
注解的作用
- 可以使代码更简洁,逻辑更加清爽
- 可以通过注解生产 API 文档
- 代码分析,通过代码里的标识的元数据对代码进行分析【使用反射】
- 编译检查,通过代码里标识的元数据让编译器能够实现基本的编译检查
自定义注解
语法:
元注解
public @interface 注解名 {
类型 属性名() [default 默认值];
}
使用:
@注解名(属性名="值")
元注解
元注解的作用就是用于定义其他注解,由 JAVA 为我们提供的,不能更改,从 JAVA 5 开始一共提供了四个注解
@Target
该注解用于描述注解的使用范围,也就是说使用了 @Target 去定义了一个注解,那么就可以决定定义好的注解能用在什么地方;
@Target 的取值使用 ElementType,ElementType 的相关说明可以自己通过 JDK 文档查看,也可以通过查看源码;
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型)、enum 声明
@Retention
该注解用于描述注解的生命周期,也就是说这个注解在什么范围内有效,注解的生命周期和三个阶段有关:源代码阶段、CLASS 文件中有效、运行时有效;
@Retention 的取值使用 RetentionPoicy,RetentionPoicy 的相关说明可以通过 JDK 文档查询,也可以通过查看源码
1.SOURCE:在源文件中有效(即源文件保留)
2.CLASS:在 class 文件中有效(即 class 保留)
3.RUNTIME:在运行时有效(即运行时保留)
@Documented
使用 @Documented 定义后的注解,在该注解使用后,如果导出 API 文档,会将该注解相关的信息可以被一些工具文档化(比如:javadoc)
@Inherited
使用 @Inherited 定义的注解具备继承性
假设一个注解在定义时,使用了 @Inherited 然后该注解在一个类上使用,如果这个类有子类,那么通过反射我们可以从该类的子类上获取到同样的注解;
想要一个东西就去买
喜欢一个人就去追
哪怕最后那个东西没有用,喜欢的人没有追到手
都没有关系
人生苦短,及时行乐
你要知道遗憾比失败可怕得多
猜你喜欢
- 2024-09-27 在Spring Boot项目中创建和使用自定义注解
- 2024-09-27 这一篇 Java 注解,写得太好了(java注解使用)
- 2024-09-27 学习廖雪峰的JAVA教程---注解(定义注解@interface)
- 2024-09-27 自定义注解妙用,一行代码搞定用户操作日志记录,你学会了吗?
- 2024-09-27 Spring Boot 整合mybatis,使用注解的方式(自动生成注解)
- 2024-09-27 面试官:实际工作中哪里用到了自定义注解?
- 2024-09-27 使用自定义注解和切面AOP实现Java程序增强
- 2024-09-27 Java-注解有什么用?该怎么用?(java 注解的作用)
- 2024-09-27 Java 17中的元注解:自定义注解的行为
- 2024-09-27 自定义注解你真会用吗?(说说自定义注解的场景及实现)
你 发表评论:
欢迎- 05-16SpringBoot整合Redis实现常用功能
- 05-16基于Redis实现简单的延时消息队列
- 05-16安装Redis
- 05-16Spring系列之Redis的两种集成方式
- 05-16Django连接Redis集群问题排查思路和总结
- 05-16只需5分钟,完成Redis所有命令操作~
- 05-16熟练使用 Redis 的 5 大数据结构:Java 实战教程
- 05-16Redis 常见业务场景及实例(Java)
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)