Java中的" - >"运算符是什么?它甚至是一个运营商吗?

0 java syntax

我在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()"是什么意思?什么是 - >运算符?

Kep*_*pil 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
Run Code Online (Sandbox Code Playgroud)