第四部分:Kotlin 进阶与实战应用
第 15 章:注解与反射
2. 元注解
什么是元注解?
元注解(Meta-annotations)是用于修饰其他注解的注解。它们提供了一种机制,用于定义注解的行为和作用范围。Kotlin 中的元注解直接借鉴自 Java,但语法更简洁,并增加了一些 Kotlin 特有的特性。
Kotlin 中的常用元注解
以下是 Kotlin 支持的元注解及其作用:
@Target
指定注解可以应用的目标(如类、函数、属性、表达式等)。
示例:@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) annotation class MyAnnotation常用目标类型:
CLASS:类或接口FUNCTION:函数PROPERTY:属性FIELD:字段VALUE_PARAMETER:函数参数EXPRESSION:表达式
@Retention
指定注解的保留策略,即注解在何时可用(源码、编译期或运行时)。
可选值:SOURCE:仅保留在源码中,编译后丢弃(如@Suppress)。BINARY:保留到编译后的字节码,但运行时不可见。RUNTIME:保留到运行时,可通过反射读取(默认值)。
示例:
@Retention(AnnotationRetention.RUNTIME) annotation class MyAnnotation@Repeatable
允许在同一目标上多次使用相同的注解。
示例:@Repeatable annotation class Tag(val name: String) @Tag("Kotlin") @Tag("Annotation") class MyClass@MustBeDocumented
强制注解包含在生成的 API 文档中(如 KDoc 或 JavaDoc)。
示例:@MustBeDocumented annotation class ExperimentalFeature
自定义元注解示例
以下是一个结合元注解的自定义注解示例:
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class ApiVersion(val version: String)
元注解的实际应用场景
- 框架开发:如 Spring 或 Ktor 中通过元注解定义控制器、路由等。
- 代码检查工具:自定义注解结合
SOURCE保留策略实现静态分析。 - 依赖注入:标记需要注入的字段或构造函数。
注意事项
- Kotlin 注解默认保留到运行时(
RUNTIME),而 Java 默认是CLASS。 - 如果注解需要被 Java 调用,需添加
@JvmAnnotation确保兼容性。
通过合理使用元注解,可以显著提升代码的可读性和工具链的集成能力。
