千家信息网

java注解与元注解实例分析

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,这篇文章主要介绍"java注解与元注解实例分析",在日常操作中,相信很多人在java注解与元注解实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"java注解与元注
千家信息网最后更新 2024年11月15日java注解与元注解实例分析

这篇文章主要介绍"java注解与元注解实例分析",在日常操作中,相信很多人在java注解与元注解实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"java注解与元注解实例分析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、注解的基本介绍

Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。

注解是以'@注解名'在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。

另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件、或者运行时中出现(SOURCE/CLASS/RUNTIME)。

在 JavaSE 中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在 JavaEE 中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替 java EE 旧版中所遗留的繁冗代码和 XML 配置等。


二、Annotation的基本介绍

1、三种基本的Annotaton

@Override : 限定某个方法,是重写父类方法 , 该注解只能用于方法

@Deprecated : 用于表示某个程序元素 ( 类 , 方法等 ) 已过时

@SuppressWarnings : 抑制编译器警告


2、代码示例

@Override

class Son extends Father{    @Override    public void play(){}}

注意:

@Override 表示子类的 play 方法时重写了父类的 play

这里如果没有写 @Override 还是会重写了父类 ply

如果你写了@Override 注解,编译器就会去检查该方法是否真的重写了父类的 方法,如果的确重写了,则编译通过,如果没有构成重写,则编译错误。

@Override 只能修饰方法,不能修饰其它类、包、属性等。

@Deprecated

@Deprecatedclass A{    @Deprecated    public static int name = 1;    @Deprecated    public void play(){ }}

注意:

已过时不是不能使用,只是不推荐使用,但是仍然可以使用

可以修饰方法,类,字段, 包, 参数 等

它的作用是可以做到新旧版本的兼容和过渡


@SuppressWarnings

@SuppressWarnings ("all")public class word{ }

注意:

关于 SuppressWarnings 作用范围是和你放置的位置相关。比如@SuppressWarnings 放置在 main 方法,那么抑制警告的范围就是 main

通过 @SuppressWarnings 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。


三、@SuppressWarnings的指定警告类型

关键字解释
all抑制所有警告
boxing抑制与封装/拆装作业相关的警告
cast抑制与强制转型作业相关的警告
dep-ann抑制与淘汰注释相关的警告
deprecation抑制与淘汰的相关警告
fallthrough抑制与 switch 陈述式中遗漏 break 相关的警告
finally抑制与未传回 finally 区块相关的警告
hiding抑制与隐藏变数的区域变数相关的警告
incomplete-switch抑制与 switch 陈述式(enum case)中遗漏项目相关的警告
javadoc抑制与 javadoc 相关的警告
nls抑制与非 nls 字串文字相关的警告
null抑制与空值分析相关的警告
rawtypes抑制与使用 raw 类型相关的警告
resource抑制与使用 Closeable 类型的资源相关的警告
restriction抑制与使用不建议或禁止参照相关的警告
serial抑制与可序列化的类别遗漏 serialVersionUID 栏位相关的警告
static-access抑制与静态存取不正确相关的警告
static-method抑制与可能宣告为 static 的方法相关的警告
super抑制与置换方法相关但不含 super 呼叫的警告
synthetic-access抑制与内部类别的存取未最佳化相关的警告
sync-override抑制因为置换同步方法而遗漏同步化的警告
unchecked抑制与未检查的作业相关的警告
unqualified-field-access抑制与栏位存取不合格相关的警告
unused抑制与未用的程式码及停用的程式码相关的警告

四、元注解

1、基本介绍

▶ 什么是元注解:

元注解就是解释注解的注解,它注解的对象是我们前面介绍的注解,如:@Override、@Deprecated@SuppressWarnings

▶ 四种元注解:

Retention:指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME

Target:指定注解可以在哪些地方使用

Documented :指定该注解是否会在 javadoc 体现

Inherited:子类会继承父类注解

▶ 注解的注意事项:

注解仅存在于源码中,在class字节码文件中不包含

默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,

注解会在class字节码文件中存在,在运行时可以通过反射获取到

首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,前者能作用的地方后者一定也能作用。

①:一般如果需要在 运行时去动态获取注解信息,那只能用 RUNTIME 注解;

②:如果要在 编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;

③:如果只是做一些 检查性的操作如 @Override 和 @SuppressWarnings,则可选用 SOURCE 注解。


2、Retention注解

解释:

只能用于修饰一个 Annotation 定义, 用于指定该 Annotation 可以保留多长时间,@Rentention 包含一个 RetentionPolicy 类型的成员变量, 使用 @Rentention 时必须为该 value 成员变量指定值(值有三种)。

三种值:

RetentionPolicy.SOURCE: 编译器使用后,直接丢弃这种策略的注释。

RetentionPolicy.CLASS: 编译器将把注解记录在 class 文件中 . 当运行 Java 程序时 , JVM 不会保留注解。 这是默认值。

RetentionPolicy.RUNTIME: 编译器将把注解记录在 class 文件中 . 当运行 Java 程序时 , JVM 会保留注解 . 程序可以 通过反射获取该注解。


3、Target 注解

解释:

用于修饰 Annotation 定义,指定被修饰的 Annotation 能用于修饰哪些程序元素。@Target 也包含一个名为 value 的成员变量。


4、Documented 注解

解释:

@Documented: 用于指定被该元注解修饰的 Annotation 类将被javadoc 工具提取成文档,即在生成文档时,可以看到该注解。

注意:

定义为@Documented 的注解必须设置Retention值为RUNTIME。


5、Inherited 注解

解释:

被@Inherited 修饰的注解 将具有继承性,如果某个类使用了被 @Inherited修饰的注解,则其子类将自动具有该注解

到此,关于"java注解与元注解实例分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

注解 方法 编译 代码 程序 解释 运行 文件 分析 作用 变量 编译器 实例 实例分析 函数 类型 学习 检查 过时 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河北数据网络技术服务技术 服务器的硬件如何管理工具 惠普实训软件开发方向 四川高原网络安全宣讲 台江区网络安全宣传周活动 戴尔服务器自检内存过不去 昨天天气预报软件开发 网络安全审查法 查询数据库链接 数据库建了索引还需要缓存吗 apex新加坡服务器三个的区别 常用的数据库应用开发工具 学计算机网络技术去什么学校好 扬州工程软件开发流程 高校图书馆信息网络安全体系 网络安全法一二三审 方舟进化手游怎么样搜索服务器 单位信息网络安全管理 网站服务器端口号怎么找 亚马逊德国的服务器费多少钱 云眼软件开发工作室 国内知名网络技术公司 如何在手机上续费阿里云服务器 泰安技校有学软件开发的吗 网络安全与信息专业怎么样 公安系统网络安全可以做哪些事 kms本地服务器激活 四川网络安全和信息办公室遴选 河南网络安全保卫总队 中锐服务器
0