在此语言级别不支持Java“lambda表达式”

问题

我正在测试Java 8的一些新功能,并将示例复制到我的IDE(Eclipse最初,然后是IntelliJ),如下所示:http://docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest.java

Eclipse没有为lambda表达式提供任何支持,并且IntelliJ不断报告错误"在此语言级别不支持Lambda表达式"。我想知道这是否是我的安装,代码或支持的问题。


#1 热门回答(209 赞)

在IntelliJ IDEA中:

InFile MenuProject StructureProject,changeProject Language Levelto8.0 - Lambdas, type annotations etc.


#2 热门回答(66 赞)

你还应在"源"选项卡("模块"部分)上更改源代码语言级别。

Change Language Level


#3 热门回答(38 赞)

对于intellij 13,只需将项目语言级别自身更改为8.0,即可进行以下导航。

File
|
|
 ---------Project Structure -> Project tab
          |
          |________Project language level

java8

##模块级别

我还不得不更新Modules lang level,因为没有maven插件forjava compiler

File
|
|
 ---------Project Structure -> Modules tab
          |
          |________ language level

Modules lang level

但是如果已经有amaven plugin,这个自动修复它将自动修复,

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.0</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>

改变后一切看起来都不错