小编Mic*_*ush的帖子

如何在实现Java接口时克服"相同的JVM签名"错误?

使用下面的代码,我在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?
Run Code Online (Sandbox Code Playgroud)

Java类,JavaInterface.java:

public interface JavaInterface {
  public String getName();
}
Run Code Online (Sandbox Code Playgroud)

科特林班, KotlinClass.kt

public class KotlinClass(val name: String?) : JavaInterface
Run Code Online (Sandbox Code Playgroud)

我已经尝试通过添加来覆盖'getter'方法override fun getName(): String? = name,但这会产生相同的错误.

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

public class KotlinClass(val namePrivate: String?) : JavaInterface {
  override fun getName(): String? = namePrivate
}
Run Code Online (Sandbox Code Playgroud)

但在我的实际案例中,我有许多属性要实现,也需要setter.对每个房产这样做似乎不是很Kotlin-ish.我错过了什么?

kotlin

41
推荐指数
4
解决办法
1万
查看次数

标签 统计

kotlin ×1