在JUNIT5 AssertThrows

骑手:

我努力学习assertThrowsjunit5,它需要Executable作为具有第二ARG void execute()方法。但通过例如在下面的例子会在同当我们传递一个LAMBDA返回一个双带法double divide(int a , int b)现在怎么可能通过以下拉姆达的,如果它不具有相同的签名execute的方法Excecutable它应该给compile error吧?

assertThrows(ArithmeticException.class,() -> m.divide(1, 0),"Failed");
安迪·特纳:
() -> m.divide(1, 0)

被视为有效像

new Executable() {
  @Override public void execute() {
    m.divide(1, 0);
  }
}

拉姆达可以像任何接口/类的具有单个抽象方法的实例进行处理。

的lambda总是polyexpressions的,这意味着他们的确切类型由在它们所使用的上下文来确定。

有没有兼容性问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章