如何处理kotlin多平台数据中的注解类?

How to deal with annotations in kotlin multiplatform data classes?

最近我将我的 KMP 项目拆分为全栈项目和一个核心库(主要由公共数据组成 classes),发现我需要在其中一个上使用 JVM 库中的注释现在在公共模块中定义的数据 classes。

似乎无法在 Kotlin 公共代码中使用来自 Java 库的注解。

有什么可能的方法可以解决此类问题,最好避免通过 expect 声明此类数据 class,然后在 actual 平台中重复其实现但使用不同的注释?

您可以 expect/actual 注释它自己。

比如说,如果你有这样的 JVM 注释,@Entity

你可以拥有 src/commonMain/Entity.kt

这样的文件
  expect annotation class Entity()

并在 src/androidMain/Entity.kt

  actual typealias Entity = package.to.Entity

并在 src/iosMain/Entity.kt

  actual annotation class Entity()

现在您可以在您的公共代码中使用它了

@Entity
data class Movies(
  val title: String,
  val release: Int
)