博客
关于我
JAVA的注解Annotation
阅读量:168 次
发布时间:2019-02-28

本文共 1681 字,大约阅读时间需要 5 分钟。

一、介绍

Java Annotation是一种用于在源代码中注释或注明代码的元信息的机制。它可以附加到类、方法、字段或常量上,提供附加信息或指令。Annotations可以用于各种目的,如元数据存储、代码验证、配置信息等。

二、Java提供的5个基本Annotation

1.@Override
@override Annotation用于标记方法的实现类方法,表示该方法实现了某个接口中的方法。它通常应用于方法的签名前面。

2.@Deprecated

@deprecated Annotation用于标记已过时的代码或功能,提醒开发者注意此代码可能已不再维护或已被替代。

3.@SuppressWarnings

@SuppressWarnings Annotation用于禁止编译器产生特定的警告提示,常用于避免代码中冗长或不必要的警告。

4.@SafeVarargs

@SafeVarargs Annotation用于标记变量,该变量可以被安全地传递给方法,避免堆污染警告。

5.@FunctionalInterface

@FunctionalInterface Annotation用于标记一个接口,该接口可以被功能性语言(如Java 8中的Lambda表达式)实现。

三、JDK的元Annotation

JDK提供了6个元Annotation,其中5个用于修饰其他Annotation的定义。这些元Annotation用于控制Annotation的行为和表现。

1.@Retention

@Retention(RetentionPolicy.RUNTIME) Annotation用于指定Annotation的保留策略。默认情况下,Annotation在编译时被保留到源代码中,但如果没有指定RetentionPolicy,Annotation在运行时会被自动移除。

2.@Target

@Target(ElementType.METHOD) Annotation用于指定Annotation可以应用的目标元素。例如,@Target(ElementType.METHOD) 表示Annotation只能应用在方法上。

3.@Documented

@Documented Annotation用于指示Annotation应该被文档化,即在生成Javadoc时,会包含该Annotation的信息。

4.@Inherited

@Inherited Annotation用于指示Annotation是否可以被子类继承。默认情况下,Annotation是可被继承的,如果不想子类继承,可以使用@Inherited注解。

四、自定义Annotation

1.分类
自定义Annotation可以根据需求分类,常见的有标记Annotation、元数据Annotation、带默认值的Annotation等。

2.标记Annotation

标记Annotation通常用于简单的标记作用,例如标记一个类、方法或字段具有某种属性。

3.元数据Annotation

元数据Annotation用于存储与代码相关的元信息,如作者、日期、版本号等。

4.带默认值的元数据Annotation

在定义元数据Annotation时,可以为成员变量定义默认值。使用时可以选择性地指定值,若不指定,默认值会被使用。

五、提取Annotation信息

1.通过反射获取Annotation信息
可以通过反射API获取程序中Annotation的信息,并根据需要进行处理。

2.获取元数据Annotation的元数据信息

对于定义了元数据Annotation的Annotation,可以通过反射获取其定义的元信息,如成员变量的值和类型。

六、使用Annotation的示例

1.指定运行的方法
可以创建一个自定义的@Run注解,用于标记可以运行的方法。

2.使用Annotation的示例

通过实际代码示例展示如何在不同位置使用Annotation,如类、字段、方法上,并解释其应用场景。

转载地址:http://fscj.baihongyu.com/

你可能感兴趣的文章
Nginx配置——不记录指定文件类型日志
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NHibernate学习[1]
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>