在Kotlin中使用接口的默认函数实现

我有一个默认实现的Kotlin接口,例如:

interface Foo { fun bar(): String { return "baz" } } 

这将是好的,直到我试图从Java实现这个接口。 当我这样做时,它说这个类需要被标记为抽象或实现方法bar() 。 另外,当我尝试实现该方法时,我无法调用super.bar()

2 Solutions collect form web for “在Kotlin中使用接口的默认函数实现”

请参阅相关问题 。

评论中有一个建议:

用Java编写接口(使用默认方法),Java和Kotlin类都正确使用这些默认值

与早期版本的Java8不同,Kotlin可以在接口中实现默认实现。

Foo接口实现为Java类时。 Kotlin隐藏了那些接口方法的实现。 如上所述。

数组在Java平台上与原始数据types一起使用,以避免装箱/取消装箱操作的成本。 由于Kotlin隐藏了这些实现细节,所以需要一个解决方法来与Java代码进行交互

这是上面链接中的Arrays特有的,但也适用于所有的类(可能是为了支持早期版本的Java8)。

编辑

以上说明是基于意见的。

有一件事我碰到,这是主要原因。

Kotlin二进制文件是用java字节码版本1.8编译的,没有接口中的默认方法。 而且他们正面临解决这个问题的关键问题

  • 创建一个活动登录
  • 什么?在Kotlin做什么?
  • Kotlin标准集合库的时间复杂度是否有任何参考?
  • 当我将它导出到可运行jar文件时,kotlin出现Javafx错误
  • 对象的快速inheritance和接口的含义
  • Kotlin对象。 哪种方式的初始化是正确的?
  • Kotlin + Maven组装:没有主要的清单属性
  • 如何使用Kotlin从Firebase数据库检索数据?
  • Kotlin - 为什么这个函数不适合尾递归?
  • 原生iOS项目中的Kotlin文件与Kotlin / Native
  • Kotlin惰性属性取决于init中初始化的另一个属性
  • Kotlin language will be the best programming language for Android.