【问题标题】:Iambda expression compilation errorLambda 表达式编译错误
【发布时间】:2017-08-08 14:32:44
【问题描述】:

我正在使用这样的 ConcurrentHashMap 搜索:

map.search(1, (k, v) -> {  
  return v.size() > 10 ? k : null;
});

但是当我删除大括号时,它会给我编译错误:

map.search(1, (k, v) -> 
  return v.size() > 10 ? return k : null;
);

我想删除大括号,因为它是 lambda 表达式中的单个语句。

更新:纠正错字

【问题讨论】:

标签: java lambda concurrenthashmap


【解决方案1】:

return 语句不是一个表达式,它是一个语句。在 lambda 表达式中,您必须将语句括在 {} 大括号中。有关更多详细信息,您可以在这里学习: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax

【讨论】:

    【解决方案2】:

    由于有 2 个返回语句,您可以使用上面发布的大括号:

    map.search(1, (k, v) -> {  
    return v.size() > 10 ? return k : null;
    });
    

    或者你需要删除另一个返回:

    map.search(1, (k, v) -> {  
    return v.size() > 10 ? k : null;
    });
    

    如需进一步了解,您可以访问以下链接:

    https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#syntax

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 2012-08-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多