Java中的“()->”是什么意思?

时间:2019-10-02 21:47:12

标签: java

我理解箭头在Java中与lambda有关的含义,但是当方括号与箭头“()->”结合使用时,我感到困惑,像这样,这行代码是什么意思?

 String error = Assertions.assertThrows(InvalidRequestException.class, () -> create(Invalid_Name)).getMessage();

1 个答案:

答案 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接口。