我努力学习assertThrows
的junit5
,它需要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] 删除。
我来说两句