【问题标题】:Access to the outside value from Java Lambda Expression [duplicate]从 Java Lambda 表达式访问外部值 [重复]
【发布时间】:2018-08-06 23:39:57
【问题描述】:

我有下面的示例代码

String value="xyz";
dataList.stream().filter(obj -> obj.equals(value))

我的问题是:如何在 Filter 的 lambda 表达式中使用 value

【问题讨论】:

  • 您应该可以直接使用它,除非您多次分配给它

标签: java lambda java-8 filtering java-stream


【解决方案1】:

如果您使用的是 Java 8,则可以直接访问它,请参见下面的代码。

 public static void main(String args[]) {
        String value="xyz";
        List<String> dataList = new ArrayList<>();
        dataList.add("abc");
        dataList.add("def");
        dataList.add("ghi");
        dataList.add("xyz");
        dataList.add("jkl");
        dataList.add("mno");



        dataList.stream().filter(obj -> obj.equals(value)).forEach(System.out::println);
    }

【讨论】:

  • 谢谢!实际上,当我在 lambda 表达式中输入变量名时,Eclipse 给了我编译错误。现在好了!
  • 好的。可能是因为之前没有设置为 Java 8 的语言级别。
  • @rohit12sh 也许你后来改了value。 Lambda 只能使用声明为 final有效最终的变量(它们不会改变)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
相关资源
最近更新 更多