注解,其实就是这么简单
文章插图
深入理解注解1、基本介绍基本概念:注解 , 顾名思义 , 就是对某一事物进行添加注释说明 , 会存放一些信息 , 这些信息可能对以后某个时段来说是很有用处的 。 Java 注解(Annotation)又称 Java 标注 , 是 JDK5.0 引入的一种注释机制 。 Java 语言中的类、方法、变量、参数和包等都可以被标注(添加某些信息) 。 在编译器生成类文件时 , 标注可以被嵌入到字节码中 。 Java 虚拟机可以保留标注内容 , 在运行时可以通过反射的方式获取到标注内容。当然它也支持自定义 的Java 标注 。
注解与注释的区别
定义不同:注解与类、接口在同一层次的 , 是一种描述数据的数据 , 可以理解为注解就是源代码的元数据 。 注释则是对源代码的介绍 , 方便开发者理解代码的所撰写的文字 。
作用不同:注解是Java 编译器可以理解的部分 , 是给编译器看的 。 通过标记包、类、字段、方法、局部变量、方法参数等元数据 , 告诉jvm这些元数据的信息 。 注释是程序员对源代码做一些记忆或提示性描述 , 是给人来看的 。 它能告诉开发者这段代码的逻辑、说明、特点等内容 , 对代码起到解释、说明的作用 。
使用范围不同:使用范围不同:注解, 参与代码编译 , 以@开头的 , 与工具一起使用 。 对于位置、语法、内容有一定的限制 。 注释, 可以随意在任务位置填写内容 , 对代码任何没有影响 。
总之 , 注解可以理解为对类、变量、方法和接口进行规范和约束 , 注释则理为开发者对代码进行解释而撰写的文字 。
注解可以根据来源可以分为系统注解、自定义注解和第三方注解 , 系统注解根据用途可以分为内置注解和元注解 , 在下面的文章中 , 我们主要讲解内置注解、元注解和自定义注解 。
2 内置注解在java.lang包下存在着我们经常看到的注解 , 分别是@Deprecated、@Override和和@SuppressWarnings
2.1@Deprecated注解@Deprecated可以修饰类、方法和变量 , 被@Deprecated修饰后表示不建议使用 , 它的存在仅仅是为了兼容以前的程序 , 由于不能直接把它抛弃 , 所以将它设置为过时 。 但是被这个注解修饰的类、方法在高版本的JDK中使用时了可能会出现错误 。
源代码如下
@Documented@Retention(RetentionPolicy.RUNTIME)@Target(value=http://kandian.youth.cn/index/{CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})public @interface Deprecated {}复制代码其中@Documented、@Retention和@Target是元注解 , 我们在下文介绍
2.2@Override注解它表明了被注解的方法需要重写父类中的方法 , 如果某个方法使用了该注解 , 却没有覆写超类中的方法 , 编译器就会报出错误 。 在子类中重写父类或接口的方法 , @Overide并不是必须的 。 但是还是建议使用这个注解 , 因为在某些情况下 , 假设你修改了父类的方法的名字 , 那么之前重写的子类方法将不再属于重写 , 如果没有@Overide , 你将不会察觉到这个子类的方法 。 有了这个注解修饰 , 编译器则会提示你这些信息 。
源代码如下
@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}复制代码2.3@SuppressWarnings注解@SuppressWarnings用来抑制编译器生成警告信息 , 可以修饰的元素为类 , 方法 , 方法参数 , 属性 , 局部变量 。 它可以达到抑制编译器编译时产生警告的目的 , 使用@SuppressWarnings注解 , 采用就近原则 , 比如一个方法出现警告 , 尽量使用@SuppressWarnings注解这个方法 , 而不是注解方法所在的类 。 所属范围越小越好 , 因为范围大了 , 不利于发现该类下其他方法的警告信息 。但是我们通常不建议使用@SuppressWarnings注解 , 使用此注解 , 开发人员看不到编译时编译器提示的相应的警告 , 不能选择更好、更新的类、方法或者不能编写更规范的编码 。 同时后期更新JDK、jar包等源码时 , 使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持 , 出现错误 , 仍然需要修改 。
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})@Retention(RetentionPolicy.SOURCE)public @interface SuppressWarnings {String[] value();}复制代码3、元注解简介在上面的代码中 , 我们看到了注解上还有注解 , 这种修饰注解的注解被称为元注解 。 事实上 , 元注解(meta-annotation)的作用就是注解其它的注解 , Java在java.lang.annotation包中定义了4个标准的元注解类型 , 分别为@Target、@Retention、@Documented和@Inherited
- 基建|深信服何朝曦:离开安全的“新基建”,就是在沙子上盖高楼
- 超清|带着 vivo S7 逛野生动物园,随手一拍就是超清大片
- 上手|OriginOS上手体验如何?化繁为简就是正确的打开方式!
- 谷歌|小米10i惊现谷歌商店,网友:这不就是我们的Redmi Note 9?
- 黑科技|又一产品被央视曝光,披着“黑科技”外衣,其实在收割智商税
- 天花板|小米10一上市就是天花板,销量突破800万,你入手了吗?
- 不到|半分钟不到,一部手机生产出来了,这就是中国速度、华为速度
- 其实我是个美食家 凯度ST40DZ-A8蒸烤一体机使用测评
- 特斯拉造自行车,也许就是这个样……
- 流畅就是跑分高?vivo选择说不,用这款杀器终结国产手机内卷
