SuperAPI AI 工具集

loom-kotlin

编程与开发

查看项目

更新于 10-18 22:15

技能介绍

用途

loom-kotlin 提供面向 JVM 上 Kotlin 2.x 的语言专业知识,目标是写出符合习惯、可用于生产的代码。它假定读者已经会写 Kotlin,重点放在生产中真正容易出问题的地方,例如 runCatching 吞掉取消异常、GlobalScope 泄漏、在错误的调度器上做阻塞调用、来自 Java 的平台类型、final 类破坏 Spring 代理等。

主要能力

  • 空安全与错误处理:讲解可空链、本地 val 智能转换、平台类型、requireNotNull/checkNotNull、lateinit、可空元素与可空列表的区别、密封结果类型,以及 use {} 的作用。
  • 数据类、密封类与值类:覆盖密封接口的穷尽 when、@JvmInline value class、data class 的派生行为与可变字段风险、data object、Enum.entries、拆构的位置语义。
  • 协程与结构化并发:coroutineScope 与 supervisorScope 的差异、GlobalScope 的风险、launch/async 选择、Dispatchers 用法、limitedParallelism、取消的协作性、runInterruptible、withTimeout 与 withTimeoutOrNull、runBlocking 的适用位置、synchronized 与挂起点的冲突及 Mutex 替代。
  • Flow:冷流语义、flowOn、catch 只捕获上游异常、stateIn/shareIn 共享、StateFlow 的合并与 update 原子更新、collectLatest。
  • Ktor:ContentNegotiation、StatusPages、路由中参数校验与响应映射、阻塞调用包裹、HttpClient 复用与 expectSuccess。
  • Spring 与 Kotlin:kotlin.spring 与 kotlin.jpa 插件、allOpen、构造器注入、@ConfigurationProperties、实体类写法、Jackson Kotlin 模块、-Xjsr305=strict。
  • 测试:kotlin.test 配合 JUnit 5、runTest 虚拟时间、MockK 的 every/coEvery 与 relaxed 风险、kotest 的 spec 与匹配器、Turbine 测试 Flow、Ktor testApplication。
  • 构建与工具:Gradle Kotlin DSL、版本目录、K2 编译器、KSP 优先于 kapt、Maven 的 kotlin-maven-plugin、convention 插件共享构建逻辑、explicitApi 等。

使用方式

资料给出固定的 Gradle 命令,例如 ./gradlew check、./gradlew testClasses、./gradlew test、./gradlew test --tests 'com.acme.FooTest.bar'、./gradlew detekt、./gradlew ktlintFormat、./gradlew dependencies --configuration runtimeClasspath,并给出 build.gradle.kts 示例配置。

技能包含 Loom 测试运行器适配器说明:Gradle 项目使用 gradle 适配器,Maven Kotlin 项目使用 maven 适配器;loom project detect 可打印每个包的选择。单个测试命令为:

  • gradle(存在 gradlew 时):./gradlew test --tests '{test}'
  • gradle(无 wrapper):gradle test --tests '{test}'
  • maven:mvn -q test -Dtest='{test}'

测试字段格式:gradle 为 package.Class.method(如 com.acme.upload.UploaderTest.retriesOnceAfterTransientFailure),maven 为 Class#method(如 UploaderTest#retriesOnceAfterTransientFailure)。子项目没有 gradlew 时从 PATH 调用 gradle;maven 适配器始终从 PATH 调用 mvn。Android 与 Kotlin Multiplatform 模块的单元测试通过变体或目标任务(testDebugUnitTest、jvmTest)运行,而该命令目标为普通 JVM 测试任务,因此契约测试应放在 JVM 模块中。

适用场景

适合已有 Kotlin 基础的开发者,用于编写或审查 JVM 上的 Kotlin 服务、Ktor/Spring 应用、协程与 Flow 代码,以及构建 Kotlin 项目的测试与静态分析流程。也适合在 Loom 环境中需要按包检测构建方式并运行单个测试的场景。

限制

内容假定读者已会写 Kotlin,属于进阶实践而非入门教程。测试运行器适配器说明中指出:多项目构建的子项目没有 gradlew 时需在主机上安装匹配的 gradle 或 mvn;Android/KMP 模块与普通 JVM 测试任务的目标差异需注意。资料未提供收费、授权、平台支持范围或效果保证等信息。