我在Oracle的Java文档页面上看到了java.util.stream的这段代码
int sum = widgets.stream()
.filter(b -> b.getColor() == RED)
.mapToInt(b -> b.getWeight())
.sum();
Run Code Online (Sandbox Code Playgroud)
我的问题 - "b - > b.getColor()"是什么意思?什么是 - >运算符?
这->是lambda表达式的一部分.这些是在Java 8中引入的,您可以在The Java Tutorials中阅读更多相关内容.简而言之,如果要实现仅包含一个方法的接口,则lambda表达式可以替换匿名类.
此外,lambda表达式的语法在JLS§15.27中有详细描述:
lambda表达式就像一个方法:它提供了一个形式参数列表和一个正文 - 一个表达式或块 - 用这些参数表示.
LambdaExpression:
LambdaParameters - > LambdaBody
Examples:
() -> {} // No parameters; result is void
() -> 42 // No parameters, expression body
() -> { // Complex block body with returns
if (true) return 12;
else {
int result = 15;
for (int i = 1; i < 10; i++)
result *= i;
return result;
}
}
(int x) -> x+1 // Single declared-type parameter
Run Code Online (Sandbox Code Playgroud)