我了解箭头在Java中与lambda有关的含义,但是当方括号与箭头“()->”结合使用时,我感到困惑,像这样,这行代码是什么意思?
String error = Assertions.assertThrows(InvalidRequestException.class, () -> create(Invalid_Name)).getMessage();
这是lambda的开始。() ->
是不接受任何参数的lambda,与(a,b,c) ->
这样的接受三个参数的事物相反。
参数也可以具有类型:(int a, long b, Object c) ->
代码() -> create(Invalid_Name)
说的是“调用create(Invalid_Name)
的函数。
对于Junit,您可以将代码编写为:
Assertions.assertThrows(InvalidRequestException.class, new Executable() {
@Override
public void execute() throws Throwable {
create(Invalid_Name);
}
}).getMessage();
这是完全相同的代码,只是更加冗长。 lambda替换匿名Executable
接口。