Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第 15 章:注解与反射

第 15 章:注解与反射

15.1 注解的定义与使用

1. 注解的基本概念

注解(Annotation)是 Kotlin 中用于为代码附加元数据的工具,它不会直接影响程序的逻辑,但可以在编译时或运行时被编译器、框架或反射 API 读取和处理。Kotlin 的注解语法与 Java 类似,但提供了更简洁的语法和更强的表达能力。

2. 注解的声明

Kotlin 中通过 annotation 关键字定义注解。注解可以包含属性(参数),但属性类型必须是以下之一:

  • 基本数据类型(Int、Long、String 等)
  • 其他注解
  • 上述类型的数组

示例:定义一个注解

annotation class MyAnnotation(
    val description: String,
    val priority: Int = 0
)

3. 注解的使用

注解可以应用于类、函数、属性、参数等代码元素。

示例:在函数和属性上使用注解

@MyAnnotation(description = "测试函数", priority = 1)
fun testFunction() {
    println("Hello, Annotation!")
}

class User {
    @MyAnnotation("用户ID字段")
    val id: Int = 1
}

4. 常见内置注解

Kotlin 提供了一些内置注解,用于控制编译行为或与 Java 互操作:

  • @JvmStatic:将伴生对象的成员暴露为 Java 静态方法。
  • @JvmOverloads:为默认参数生成重载方法(兼容 Java)。
  • @Deprecated:标记已过时的代码。

示例:使用 @Deprecated

@Deprecated("使用新函数 newFunction() 替代", ReplaceWith("newFunction()"))
fun oldFunction() { /* ... */ }

5. 注解的运行时保留

默认情况下,Kotlin 注解在编译后会被丢弃(仅保留在源码级别)。若需要在运行时通过反射读取注解,需显式指定 @Retention 为 RUNTIME:

@Retention(AnnotationRetention.RUNTIME)
annotation class RuntimeAnnotation

6. 注解的实践场景

  • 框架集成:如 Spring Boot 的 @RestController、Room 的 @Entity。
  • 代码生成:通过注解处理器(如 kapt)生成代码(如 Dagger 2)。
  • 静态检查:结合 @RequiresApi 或自定义注解限制 API 使用范围。

下一步学习:了解如何通过元注解(如 @Target)进一步控制注解的作用目标(15.2 元注解)。

Last Updated:: 5/21/25, 7:58 PM