我有一个带有Java依赖项的scala项目。我想在对返回Void的java方法进行调用时执行一些代码(特别是,我想在调用该方法时完成未来)。有办法做到这一点吗?以下编译但在运行时抛出异常:
val startLF = SettableFuture.create[Unit]()
when(mockConsumer.start).thenAnswer(new Answer[Void]() {
override def answer(invocationOnMock: InvocationOnMock): Void = {
startLF.set()
Void.TYPE.newInstance()
}
})
谢谢!
似乎可以将null
归为Void
,例如
def foo: Void = null
因此,在您的示例中,可以将Void.TYPE.newInstance()
替换为null
或null: Void
,以使其更加清晰。
您可以添加一个隐式Unit -> Void
转换:
import scala.language.implicitConversions
implicit def unitToVoid(u: Unit): Void = null
然后,任何返回Unit
的东西都可以在期望Void
的地方使用,例如:
def foo: Void = println("")