lambda expressions are not supported at this language level的问题解决

心血来潮,想用intellij idea测试一些代码,报了一个错误lambda expressions are not supported at this language level ‘5’,简直是一头雾水,代码很简单啊!

        Thread th1 = new Thread(()->{
            test.add10K();
        });

看起来像是当前的语言等级(jdk版本不支持这种写法),然后开始一堆查找资料,现在使用的sdk一般都是java jdk8,jdk中新增了一些新特性,如:

  1. Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。
  2. 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
  3. 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。
  4. 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。
  5. Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
  6. Date Time API − 加强对日期与时间的处理。
  7. Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
  8. Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用。

额,lambda表达式是jdk 8以后专有的,也就是说我们的language level至少也设置为8以上。

点击intellij idea左上角,File->Project Structure
在这里插入图片描述

之后编译运行,又报了一个错误Error:java: Compilation failed: internal java compiler error
真是一波三折啊,编译错误,也是只需要简单修改intellij idea配置即可:

点击intellij idea左上角,File->Settings->Bulid, Execution,Deployment->Compiler->Java Compiler
在这里插入图片描述

发布了35 篇原创文章 · 获赞 81 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chanllenge/article/details/90286223