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

在kotlin中使用接口时获取平台声明冲突

轩辕晔
2023-03-14

我正在将Java中的一些类转换为kotlin,当试图从接口继承时,我遇到了编译错误:

平台声明冲突:以下声明具有相同的JVM签名(getContentID()ljava/lang/string;):

interface Media {
  val contentId: String

  val displayRunTime: String

  val genres: List<String>

  val programId: String

  val runTime: String

  val type: String
}
class Airing : Media {
  override val contentId: String? = null
  override val displayRunTime: String? = null
  override val genres: List<String>? = null
  override val programId: String? = null
  override val runTime: String? = null
  override val type: String? = null

  override fun getContentId(): String? {
    return contentId
  }

我对Kotlin来说是超级新的。

共有1个答案

富波光
2023-03-14

您不需要声明override fun getContentId():string?,因为media接口中的val contentId:string已经被override val contentId:string?重写。

您得到的错误意味着您在JVM字节码中声明的函数与已经为ContentID属性生成的getter发生冲突(getter具有相同的签名)。

在Kotlin中,您应该直接使用contentID属性,而在Java中,您可以使用生成的访问器getcontentID()setcontentID(...)

另外,Kotlin不允许您使用可为空的字符串属性重写not-null字符串?属性,因为基接口的用户希望该属性提供not-null值。您应该用string替换重写的属性类型,或者在接口中将它们设置为string?

 类似资料:
  • 我正在将Java中的一些类转换为kotlin,当试图从接口继承时,我遇到了编译错误: 平台声明冲突:以下声明具有相同的JVM签名(getContentID()ljava/lang/string;): 下面是课程: 我对Kotlin来说是超级新的。

  • fun setCollection(collection:(Mutable)Collection !):KotlinClass中定义的单元 无论我做什么,都没有办法只用Kotlin代码来编译它。 再现情况的代码: Java本身就不存在这个问题。所以我猜测这可能与平台类型有关(不是)。 有没有一个优雅的解决方案来解决这个问题,最好不需要编写Java代码?还是应该在Kotlin编译器中解决这个问题?

  • NEI 目前已经发布了接口测试的功能,方便开发人员在本地测试接口。 接口测试入口 在左侧导航栏进入接口测试。 测试单个接口 选择好项目组和项目,在下方选择待测的接口,进入用例配置界面。 在用例配置界面可以配置项目的服务器环境。 也可以在接口列表上方选择项目的服务器环境。 在下方填入测试用例的请求数据。 其中,路径参数,请求数据NEI已自动随机生成相应的数据,你可以根据自己的需要进行修改,注意生成的

  • 接口方式 1.我们提供两种接口方式API方式和DLL动态库,两种对接方式都可以完成对接。 2.API接口方式使用http协议,GET或POST方式提交和接收数据,数据交换格式为JSON 3.DLL接口方式使用DLL动态库调用,支持JSON,INI,XML三种文件格式进件数据交换 4.DLL接口优点: a.接入的难度DLL方式低于API方式, b.DLL调用方式也能实现全部的接口协议, c.DLL接

  • 我们提供两种接口方式API方式和DLL动态库,两种对接方式都可以完成对接。API 接口方式使用http协议,GET或POST方式提交和接收数据,数据交换格式为 JSON。

  • 问题内容: 在我的NativeScript项目中,我想包含RecyclerViewAndroid支持库中的内容。我将依赖项包括在: 从git issue#2295和其他相关问题中,我读到tns-platform-declarations可以提供本机android / ios库的定义文件的内容。所以我安装了它们并遵循了tns平台声明文档 我想编译以下示例代码段: 声明var android以上类似内