我有一个带有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()
}
})
谢谢!
答案 0 :(得分:2)
您似乎可以将null
归为Void
,例如
def foo: Void = null
因此,在您的示例中,您可以将Void.TYPE.newInstance()
替换为null
或null: Void
以更清晰。
答案 1 :(得分:-1)
您可以添加隐式Unit -> Void
转化:
import scala.language.implicitConversions
implicit def unitToVoid(u: Unit): Void = null
然后,任何返回Unit
的内容都可以在需要Void
的地方使用,例如:
def foo: Void = println("")