我在Oracle的java.util.stream
的java文档页面上看到了这段代码int sum = widgets.stream()
.filter(b -> b.getColor() == RED)
.mapToInt(b -> b.getWeight())
.sum();
我的问题 - " b - > b.getColor()"意思?什么是 - >运营商?
答案 0 :(得分:5)
->
是 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