本文目录#

互操作常见问题#

在 Java 项目逐步引入 Kotlin 时,需要注意空安全、协程、SAM 转换等差异,否则容易在模块边界产生 NullPointerException 或性能开销。

核心检查点#

  • 空安全:在 Kotlin 暴露给 Java 的 API 上使用 @NotNull/@Nullable 注解;
  • 协程:提供 suspend 函数的 Java 包装器;
  • 默认参数:为 Java 调用方提供 @JvmOverloads;
  • 函数式接口:使用 fun interface@FunctionalInterface
  • 数据类与记录:在 Java 中选择 componentNcopy 方法时注意不可变约束。

构建配置#

  • Maven:在 maven-compiler-plugin 中添加 -parameterskotlin-maven-plugin 顺序;
  • Gradle:配置 kotlinOptions.jvmTargetjava { toolchain } 统一;
  • 检查模块路径与 module-info.javarequires kotlin.stdlib

自检清单#

  • 是否为跨语言 API 编写单元测试验证空安全?
  • 是否避免在 Kotlin 中频繁创建 SAM 适配器造成装箱?
  • 是否在文档中记录协程调度策略与 Java 线程池配合?

参考资料#


本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。