我理解箭头在Java中与lambda有关的含义,但是当方括号与箭头“()->”结合使用时,我感到困惑,像这样,这行代码是什么意思?
String error = Assertions.assertThrows(InvalidRequestException.class, () -> create(Invalid_Name)).getMessage();
答案 0 :(得分:-1)
这是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
接口。