《Kotkin从小白到大牛》第27章:注解

本文深入探讨了Kotlin中的注解,包括元注解如@Target、@Retention、@Repeatable和@MustBeDocumented的用法,并介绍了如何自定义注解,同时提供了使用元注解的案例。通过反射API,可以读取运行时注解信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第27章 注解

在源代码中嵌入一些补充信息,这种补充信息称为注解(Annotation)。注解并不能改变程序运行的结果,不会影响程序运行的性能。有些注解可以在编译时给用户提示或警告,有的注解可以在运行时读写字节码文件信息。
在这里插入图片描述
Kotlin中的注解本质上一种接口类型。Kotlin标准库中提供一些基本注解和元注解。基本注解会影响编译器的行为,如:@JvmName、@JvmField、@JvmStatic、@JvmOverloads和@Throws等,这些基本注解主要用于Kotlin与Java的混合编程中。元注解(Meta Annotation)是负责注解其他的注解,自定义注解会用到元注解。

27.1 元注解

Kotlin元注解有4个,其中包括@Target、@Retention、@Repeatable和@MustBeDocumented,它们都位于kotlin.annotation包中。元注解是为其他注解进行说明的注解,当自定义一个新的注解类型时,其中可以使用元注解。这一节先介绍一下这几种元注解含义,下一节在自定义注解中详细介绍它们的使用的。
1.@Target
@Target适用目标注解,对应注解类是kotlin.annotation.Target,它用来指定一个新注解的适用目标。@Target注解有一个allowedTargets属性,该属性用来设置适用目标,allowedTargets是kotlin.annotation.AnnotationTarget枚举类型的数组,AnnotationTarget描述Kotlin代码中可以被注解的元素类型,它有15个枚举常量,如表27-1所示。
在这里插入图片描述
1.@Retention
@Retention保留期注解,对应注解类是kotlin.annotation.Retention,它用来指定一个新注解的有效范围,@Retention注解有一个value属性,该属性用来设置保留期,value是kotlin.annotation.AnnotationRetention枚举类型,AnnotationRetention描述注解保留期种类,它有3个常量,如表27-2所示。
在这里插入图片描述
2.@Repeatable
@Repeatable可重复注解,对应注解类是kotlin.annotation.Repeatable,它允许在相同的程序元素中重复注解,可重复的注解必须使用@Repeatable进行注解。
3.@MustBeDocumented
@MustBeDocumented文档注解,对应注解类是kotlin.annotation.MustBeDocumented,该注解可以修饰代码元素(类、接口、函数和属性等),文档生成工具可以提取这些注解信息。

27.2 自定义注解

与基本注解不同,元注解在一般的应用开发中不会直接使用,在开发框架或生成工具时会用到一些自定义注解,元注解是自定义注解的组成要素。
声明自定义注解可以使用annotation关键字实现,最简单形式的注解示例代码如下:
annotation class Marker
上述代码声明一个Marker注解,annotation声明一个注解类型,注解的可见性有共有的、内部的和私有的,不能是保护的。
Marker注解中不包含任何的成员,这种注解称为标记注解(Marked Annotation),标记注解属于基本注解。注解也可以有成员属性,通过构造函数初始化成员属性。示例代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值