gpt4 book ai didi

java - 我在java代码中实现了在kotlin中定义的接口(interface)。此处不允许使用 'void' 类型

转载 作者:行者123 更新时间:2023-12-02 11:43:33 34 4
gpt4 key购买 nike

我在 kotlin 中定义了一个监听器接口(interface),如下所示

interface FooListener {
fun onCall()
}

我认为返回类型实际上是 kotlin 中的 Unit

然后我用java实现了这个接口(interface)

FooListener l = new FooListener() {
@Override
public void onCall() {
}
}

这里的onCall函数实现是由IDE自动生成的

我在编译时遇到错误

Error:(107, 85) error: 'void' type not allowed here

谁能帮我解决这个问题吗?

最佳答案

我无法重现这个。估计是编译器的bug,你可以尝试换个新版本。

在我的 IDE 中,我的代码:

工作正常。

这里我想提供两种解决方案:

  • void 更改为 Unit,并将 return Unit.INSTANCE; 放在实现的末尾。
  • fun onCall() 更改为 fun onCall(): Void?,并将 return null; 放在实现的末尾。

我尝试了更多示例,即使我编写了一个匿名内部类(我使用 IDE 图片而不是代码 fragment 来向您展示代码是正确的):

或者将其替换为 lambda 表达式:

它仍然工作正常。

如果您仍然无法弄清楚,只需使用标准库提供的另一个接口(interface),例如java.util.function.Consumer

关于java - 我在java代码中实现了在kotlin中定义的接口(interface)。此处不允许使用 'void' 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372917/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com