此语言级别不支持Lambda表达式 [英] Lambda expressions are not supported at this language level

查看:232
本文介绍了此语言级别不支持Lambda表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用Spark的Java类。我需要从JavaRDD中过滤掉标题。这就是我想要这样做的方式。

I have a Java class that uses Spark. I need to filter out the header from JavaRDD. This is how I want to do this.

String first = data.first();
JavaRDD<String> filteredData = data.filter((String s) -> {return !s.contains(first);});

但是,此代码 data.filter((String s) - > {return!s.contains(first);})无法编译。 IntelliJ IDE说在此语言级别不支持Lambda表达式。

However, this code data.filter((String s) -> {return !s.contains(first);}) cannot be compiled. IntelliJ IDE says "Lambda expressions are not supported at this language level".

推荐答案

你可以在Java 7上使用lambdas,但它有点涉及 - 你必须使用类似 Retrolambda

You can use lambdas on Java 7, but it is a bit involved — you have to use something like Retrolambda.

你也可以在没有lambdas的情况下做同样的事情。 Lambda可以通过匿名类轻松表示,但它更冗长。

Also you can do the same thing without lambdas. Lambdas can be easily represented via annonymous classes, however it is a lot more verbose.

final String first = data.first();
JavaRDD<String> filteredData = data.filter(new Function<String, Boolean>() {
  @Override public Boolean call(String s) {
    return !s.contains(first);
  }
});

这篇关于此语言级别不支持Lambda表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆