JAVA注解相关知识总结

论坛 期权论坛 脚本     
niminba   2021-5-23 02:54   1534   0

注解的概念

java注解:

比较官方的说法:

从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。

注解,可以看作是对 一个 类/方法 的一个扩展的模版,每个 类/方法 按照注解类中的规则,来为 类/方法 注解不同的参数,在用到的地方可以得到不同的 类/方法 中注解的各种参数与值。

说说我的理解

注解就是Annotation,相信不少人也和我之前一样以为和注释一样,是一段辅助性的文字,其实注解不是这样的。注解与注释的区别在于,注解可以实现程序的某些功能。

注解是不会影响java程序的运行,不会干扰程序代码的运行。通俗来讲,注解就像一个标签,初学者需要知道他就像一个功能标签,能实现一些功能就行了!入门了再慢慢深入理解。

看下面的例子你就能更好的理解注解了。

注解的类别

(1)java语言提供的注解

(2)元注解

(3)其他注解

java语言提供的注解

1.Override

学过java你就知道,你肯定见过这种

@Override
public Object clone() throws CloneNotSupportedException {}

没错,@Override就是一个java提供的注解。当你要重写父类的方法是需要用到这个注解。

2.@Deprecated

这个注解你能看到的时间比较少,但是你应该见过类似的,编译一个java程序时,编译器可能会提示你你使用了一个过时的方法(idea会),或者过时的类,过时的成员变量。

3.@SuppressWarnings

这个注解的意思是:阻止编译器的警告,上一个注解说到@Deprecated会提示你使用过时方法等的一个警告,当你使用了这个注解之后就不会有这种提示了!这个注解需要一个参数,参数都是提前设计好了的。
参数如下

(1)deprecation 使用了过时的类或方法的警告

(2)unchecked 执行了未检查的转换时的警告,如使用集合时未指定泛型

(3)fallthrough :当在switch语句使用时发生case穿透

(4)path 在类路径,源文件路径等中有不存在路径的警告

(5)serial 当在可序列化的类上缺少serialVersionUID定义时的警告

(6)finally 任何finally子句不能完成时的警告

(7)all 关于以上所有情况的警告

元注解

所谓元注解就是注解的注解,虽然说这些注解也是java语言提供的,但是他不同于上面说的哪几种注解,上面的几种注解也是由

元注解组成的。他们的源代码里面包含了元注解。

元注解有哪些呢?

- @Target:注解的作用目标
- @Retention:注解的生命周期
- @Documented:注解是否应当被包含在 JavaDoc 文档中
- @Inherited:是否允许子类继承该注解

这4个值java8之前的元注解,在java8又新增了一个

@Repeatable 元注解,表示被修饰的注解可以用在同一个声明式或者类型加上多个相同的注解(包含不同的属性值)

我们详细说一下这些注解都是什么意思

1.@Target 注解的作用目标

具体的作用目标有以下几个
- ElementType.TYPE:允许被修饰的注解作用在类、接口和枚举上
- ElementType.FIELD:允许作用在属性字段上
- ElementType.METHOD:允许作用在方法上
- ElementType.PARAMETER:允许作用在方法参数上
- ElementType.CONSTRUCTOR:允许作用在构造器上
- ElementType.LOCAL_VARIABLE:允许作用在局部变量上
- ElementType.ANNOTATION_TYPE:允许作用在注解上
- ElementType.PACKAGE:允许作用在包上

以上都是这个注解的参数

可能有人会问作用目标是什么?就是说我声明的这个注解可以用在那个地方,比如说@Override,是不是只能用在重写的方法上面。如果你学了springboot的话,里面的很多注解都是可以使用在类上面也可以使用在方法上面。

2.@Retention 注解的生命周期

什么意思?注解本身是不会影响正常逻辑程序的运行的,然后这个注解的生命周期指的是我声明的这个注解会保留到什么阶段,具体的参数如下:

- RetentionPolicy.SOURCE:当前注解编译期可见,不会写入 class 文件,会被编译器丢弃
- RetentionPolicy.CLASS:类加载阶段丢弃MMM4('Rgj:ZN>GzsG:Zr'Rg>[+^!#惞S?4(b)YΣn~Oj3nkYΣjZgΣnZ
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP