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

问题描述 投票:0回答:1

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

 String error = Assertions.assertThrows(InvalidRequestException.class, () -> create(Invalid_Name)).getMessage();
java junit
1个回答
0
投票

这是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接口。

© www.soinside.com 2019 - 2024. All rights reserved.