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

时间:2015-03-04 21:59:17

标签: java syntax

我在Oracle的java.util.stream

的java文档页面上看到了这段代码
int sum = widgets.stream()
                  .filter(b -> b.getColor() == RED)
                  .mapToInt(b -> b.getWeight())
                  .sum();

我的问题 - " b - > b.getColor()"意思?什么是 - >运营商?

1 个答案:

答案 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