如何处理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
)
最近我将我的 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
)