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

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

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

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

请参阅相关问题 。

评论中有一个建议:

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

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

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

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

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

编辑

以上说明是基于意见的。

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

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