Java IntelliJ 13.1.4版本:Lambda表达式在此语言级别不受支持。

6

当我尝试使用表达式 value -> value 时,出现了Lambda不受支持的错误。我目前正在使用支持Lambda的1.8 JDK,但仍然出现错误。我猜测可能是因为IntelliJ 13.1.4版本的问题,但我不能确定。

public static void grades(){
    final List<Integer> grade = new ArrayList<Integer>();
    int gradelistnumber = 1;
    int inputedgrade = 0;

    while(inputedgrade != -1){
        System.out.println("Enter Grade for student " + gradelistnumber + " (1-50): ");
        inputedgrade = sc.nextInt();
        grade.add(inputedgrade);
        gradelistnumber++;


    }

    System.out.println("Class Average: " + System.out.println(grade.stream().mapToInt(value -> value /*error*/).sum()));
  }

}

应用程序标题栏上应显示您的Intellij版本号。如果没有显示,您可以在“帮助->关于”中找到它。 - Daniel Kaplan
4个回答

16
除了其他人提到的File > Project Structure > Project > Project Language Level之外,还应检查File > Project Structure > **Modules** > Sources > Project Language Level并将其设置为8。

8

前往

File > Project Structure > Project > Project Language Level

确认是否为8.0版本


3
除了语言级别错误外,这行代码还存在编译错误(+运算符无法应用于System.out.println返回的void)。
System.out.println("Class Average: " + System.out.println(grade.stream().mapToInt(value -> value /*error*/).sum()));

将其更改为:

System.out.println("Class Average: " + grade.stream().mapToInt(value -> value).sum());

您可以比通过进入“项目结构”菜单更轻松地更改语言级别。只需将光标定位到显示错误的代码部分,按下ALT + ENTER,并选择“将语言级别设置为8.0”。在IntelliJ中,这是一件好事情,因为您可以轻松解决许多来自ALT + ENTER菜单的警告和错误。

3

如果您使用pom.xml构建项目,请修复maven编译器插件。

   </dependencies>
    <build>
        <finalName>SnmpAgentExample</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

使用这个属性,可以在Gradle中完成同样的操作:

compileJava.sourceCompatibility
compileJava.targetCompatibility

并且按照之前提到的检查。

文件 > 项目结构 > 项目 > 项目语言级别


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接