我想使用 camunda-bpm-assert-scenario在我的 ScalaTests 中。
我有这段代码 receiveTask::receive
:
when(documentRequest.waitsAtReceiveTask("ReceiveTaskWaitForDocuments")).thenReturn((receiveTask) -> {
receiveTask.defer("P1DT1M", receiveTask::receive);
});
根据Is it possible to use a Java 8 style method references in Scala?中的回答我可以很容易地将其翻译成:
receiveTask.defer("P1D", receiveTask.receive _)
但这给了我:
Error:(84, 45) type mismatch;
found : Unit
required: org.camunda.bpm.scenario.defer.Deferred
receiveTask.defer("P1D", receiveTask.receive _)
这是接收
函数:
void receive();
这是预期的界面:
public interface Deferred {
void execute() throws Exception;
}
我如何在 Scala 中实现这一点? 这不是 Is it possible to use a Java 8 style method references in Scala? 的副本,没有解决“Error:(84, 45) type mismatch; ……”
最佳答案
看完这篇stackoverflow answer ,我可以解决它:
receiveTask.defer("P1D", new Deferred{
def execute(): Unit = receiveTask.receive()
})
Intellij 建议将其转换为单一抽象方法:
receiveTask.defer("P1D", () => receiveTask.receive())
问题是 receive
还有一个带参数的重载函数。
关于java - 如何将 Java 双冒号运算符 (::) 翻译成 Scala?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766482/