kotlin - 实现Java接口(interface)时如何克服 "same JVM signat

使用下面的代码,我在 IntelliJ IDEA 13.1.6 和 Kotlin 插件 0.11.91.AndroidStudio.3 中收到以下错误:

Platform declaration clash: The following declarations have the same JVM signature (getName()Ljava/lang/String;):
  • public open fun getName(): kotlin.String?
  • internal final fun <get-name>(): kotlin.String?

Java 类,JavaInterface.java:

public interface JavaInterface {
  public String getName();
}

Kotlin 类,KotlinClass.kt

public class KotlinClass(val name: String?) : JavaInterface

我尝试过覆盖“getter”方法 添加 override fun getName(): String? = name,但这会产生同样的错误。

我可以通过这样做看到一种解决方法:

public class KotlinClass(val namePrivate: String?) : JavaInterface {
  override fun getName(): String? = namePrivate
}

但在我的实际案例中,我有许多要实现的属性并且也需要 setter 。对每个属性都这样做似乎不太像 Kotlin。我错过了什么?

最佳答案

将该变量设置为 private 可以解决问题。

public class KotlinClass(private val name: String?) : JavaInterface

关于kotlin - 实现Java接口(interface)时如何克服 "same JVM signature"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268526/

相关文章:

java - Android Studio 3.0 金丝雀 1 : Kotlin tests or

android - 无法使用 Android Studio 3.0 + DataBinding +

arrays - 字符串数组文字?我如何简单地编码?

kotlin - Kotlin 中的扩展字段

kotlin - Dagger 和 Kotlin 。 Dagger 不生成组件类

gradle - 如何将 Gradle 项目中 Kotlin 的字节码版本设置为 Java 8?

javascript - Kotlin JavaScript 到 TypeScript 定义文件

android - Kotlin Coroutines 在 Android 中的正确方式

android - IllegalArgumentException : Parameter spe

kotlin - 如何在 Kotlin 中向 Java 类添加静态方法