首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于重载Kotlin属性的JvmName

用于重载Kotlin属性的JvmName
EN

Stack Overflow用户
提问于 2022-03-28 01:31:54
回答 1查看 100关注 0票数 2

我有一个开放的Kotlin类,它的属性为value: String

代码语言:javascript
复制
open class PropHolder {
  open val value: String = ""
}

有一个带有函数String getValue()的Java接口。

代码语言:javascript
复制
public interface Property {
  public String getValue();
}

我有一个子类,它继承了开放的Kotlin类并实现了Java接口。

代码语言:javascript
复制
class Child : PropHolder(), Property {
  override fun getValue() = value
}

遇到平台声明之间的冲突:

  • 公共开放乐趣< get-value >():String
  • public open getValue():String

我试过:

代码语言:javascript
复制
class Child : PropHolder(), Property {
  override val value: String = ""
    @JvmName("getHeldValue") get() = field

  override fun getValue() = value
}

以及:

代码语言:javascript
复制
class Child : PropHolder(), Property {
  @JvmName("getPropValue")
  override fun getValue() = value
}

但是,因为这些都是继承的方法,所以我实际上不能重写任何一个方法的JvmName。

有什么办法让这件事成功吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-28 02:05:25

看起来我可能遇到了一个未解决的问题:https://youtrack.jetbrains.com/issue/KT-6653

目前的共识是,可能会有一个保留不久,以探索潜在的选择,但目前还没有很好的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71641566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档