使用下面的代码,我在 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 +
kotlin - Dagger 和 Kotlin 。 Dagger 不生成组件类
gradle - 如何将 Gradle 项目中 Kotlin 的字节码版本设置为 Java 8?
javascript - Kotlin JavaScript 到 TypeScript 定义文件
android - Kotlin Coroutines 在 Android 中的正确方式