当前位置: 首页 > 知识库问答 >
问题:

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

江航
2023-03-14

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

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

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

共有1个答案

彭炳
2023-03-14

您可以期望/实际它自己的注释。

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

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

  expect annotation class Entity()

而在src/androidMain/Entity.kt

  actual typealias Entity = package.to.Entity

和 in src/iosMain/Entity.kt

  actual annotation class Entity()

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

@Entity
data class Movies(
  val title: String,
  val release: Int
)
 类似资料:
  • 通常,当我在Kotlin代码中使用Java库中的注释时,我必须指定target以指定编译代码中必须注释的元素: 而不是指定,我希望能够简单地使用,特别是如果它发生在许多地方。 问题:有没有一种方法可以提示Kotlin编译器在所有位置使用不同的目标,这样如果我使用,它就会像处理一样处理它?或者有没有其他方法可以省略指定目标?如何实现这一目标?是否可以在编译阶段通过注释处理完成(像Lombok那样)?

  • 我得到这个构建错误: kotlin多平台项目中的kotlinOptions 奇怪的是,最初的海报据称只是通过修补他的androidx进口产品来解决这个问题。也许值得注意的是,我的所有六个“不能内联字节码”都与对新的多平台Okio库的方法调用相关联。但更有可能的是我自己的设置出现了错误,而不是杰克·沃顿帮做的事情。

  • 我的KMP Jetpack Compose项目中继续出现Gradle配置错误 配置项目:共享时出现问题。 找不到名为“testApi”的配置。 我的设置是: Android Studio北极狐狸2020.3.1金丝雀3 项目级别设置 注意:通过删除一部分一部分的配置,我似乎发现问题似乎是围绕着android配置本身,所以如果我删除android()部分 只要简单的jvm()就可以了

  • 在我的新公司,我是一名数据工程师,负责构建google cloud platform(GCP)批处理ETL管道。我的团队的数据科学家最近给了我一个数据模型(用Python3.6编写的.py文件)。 数据模型有一个主函数,我可以调用它并获得一个dataframe作为输出,我打算将这个dataframe附加到一个bigquery表中。我是否可以只导入这个主函数,并使用apache beam(Dataf

  • 我们有一个DynamoDb表,其中一个列名“createdAt”有时创建为S(String)数据类型,有时创建为N(Number)数据类型。 在我的代码中,如果我定义为String,当我想获取数据时它会失败,它是数字: 如果我定义为Number,当我想获取数据并且它是表中的字符串时失败: 你们有没有人以前也有过同样的问题?应该有办法解决它对吗?并且不能只选择一种数据类型:(