Java -> 运算符

Java -> operator

我知道 -> 用于语法为 ()->{}.

的 lambda 表达式

但我看到了这段代码:file -> file.isFile() - 没有 (){}。它有什么作用?

当您只有一个参数时,

() 不是必需的,而当您的 lambda 主体是单个表达式时,{} 不是必需的。

有关语法的更正式说明,请参阅 the Java tutorial for further information and the Java Specification

正如 Federico 回答的那样,对于 单个参数 你不需要 () 而对于 语句只需要 return 一个值 并且不要做任何其他事情,你不需要 {}.

我想对他的贡献做的补充:

你输入的代码意味着,有一个函数,将文件作为参数。然后,return是它的 .isFile()

换句话说,你也可以通过定义一个方法来达到同样的目的:

<private/protected/public> boolean myLovelyMethod(File file){
    return file.isFile();
}

Lambda 函数只是让它更短了一点。如果您不打算使用 re-use 方法,使用 lambda 可能会更好。