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

mis*_*ope 5 kotlin-multiplatform

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

似乎不可能在 Kotlin 公共代码中使用 Java 库中的注释。

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

and*_*max 6

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

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

你可以有这样的文件src/commonMain/Entity.kt

  expect annotation class Entity()
Run Code Online (Sandbox Code Playgroud)

并在src/androidMain/Entity.kt

  actual typealias Entity = package.to.Entity
Run Code Online (Sandbox Code Playgroud)

并在src/iosMain/Entity.kt

  actual annotation class Entity()
Run Code Online (Sandbox Code Playgroud)

现在您可以继续在通用代码中使用它

@Entity
data class Movies(
  val title: String,
  val release: Int
)
Run Code Online (Sandbox Code Playgroud)