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

实现Java接口的Kotlin数据类

闻人志
2023-03-14
data class Video(val id: Long, val ownerId: Long, val title: String, val description: String? = null,
             val imgLink: String? = null, val created: Date? = null, val accessKey: String? = null,
             val views: Long? = null, val comments: Long? = null, val videoLink: String? = null): Entity
public interface Entity {
   Long getId();  
}

我必须使用任何额外的关键字的id Param吗?什么是“!”签名里的刻薄?

共有1个答案

孙正业
2023-03-14

这里的问题是,Kotlin首先加载Java类实体,它将getid视为函数,而不是某个属性的getter。Kotlin类中的属性getter不能重写函数,因此属性id不作为getid函数的实现绑定。

要解决这个问题,应该重写Kotlin类中的原始函数getid。这样做将导致新函数与字节码中ID的getter之间的JVM签名冲突,因此还应该通过将属性private设置为private来防止编译器生成getter:

data class Video(
    private val id: Long,
    ...
): Entity {
    override fun getId() = id

    ...
}

注意,这个答案是从这里改编的:https://stackoverflow.com/a/32971284/288456

 类似资料:
  • 问题内容: 相当于kotlin中的代码,我尝试执行的操作似乎无效: 在里面: 问题答案: 如果是Java,则可以使用SAM转换: 否则,如果界面是Kotlin … …您可以使用语法匿名实现它:

  • 本文向大家介绍Kotlin 与默认实现接口,包括了Kotlin 与默认实现接口的使用技巧和注意事项,需要的朋友参考一下 示例 Kotlin中的接口可以具有功能的默认实现: 实现此类接口的类将能够使用这些功能而无需重新实现 物产 默认实现也适用于属性获取器和设置器: 接口访问器实现不能使用后备字段 多种实现 当多个接口实现相同的功能,或者所有接口都定义一个或多个实现时,派生类需要手动解析正确的调用

  • 本文向大家介绍java读取PHP接口数据的实现方法,包括了java读取PHP接口数据的实现方法的使用技巧和注意事项,需要的朋友参考一下 和安卓是一个道理,读取json数据 PHP文件: java文件: 以上这篇java读取PHP接口数据的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我有一个Kotlin项目,在该项目中,我使用了一个Java库依赖项,该依赖项定义了一个带有字符串name()方法声明的接口。 谢谢

  • 问题内容: 有没有为接口方法创建默认实现的首选方法或样式?假设我有一个常用的接口,在90%的情况下,我想要的功能是相同的。 我的第一个直觉是用静态方法创建一个具体的类。然后,当我想要默认功能时,可以将功能委托给静态方法。 这是一个简单的示例: 接口 方法的具体实现 使用默认功能的具体实现 这里有更好的方法吗? 编辑 在看到了一些建议的解决方案之后,我认为我应该更加清楚自己的意图。本质上,我正在尝试