我正在努力学习assertThrows在junit5,它以Executable作为第二arg,其中有一个void execute()方法。但是,在下面的示例中,在相同的示例中,我们将传递给它一个LAMBDA,它将返回带double divide(int a , int b)方法的double。如果下面的lambda没有与execute的Excecutable方法相同的签名,那么如何传递它呢?它应该给compile error权利吗?
assertThrows(ArithmeticException.class,() -> m.divide(1, 0),"Failed");发布于 2020-02-09 14:20:34
() -> m.divide(1, 0)被有效地对待
new Executable() {
@Override public void execute() {
m.divide(1, 0);
}
}可以使用单个抽象方法将lambda视为任何接口/类的实例。
Lambdas始终是多个表达式,这意味着它们的确切类型取决于使用它们的上下文。
不存在兼容性问题。
https://stackoverflow.com/questions/60137455
复制相似问题