2014-10-09 84 views
6

当我尝试使用表达式value -> value时,出现错误,指出不支持Lambda。我目前正在使用支持Lambda的1.8 JDK,但仍然出现错误。我的猜测是IntelliJ 13.1.4,但我不积极。Java IntelliJ 13.1.4“此语言级别不支持Lambda表达式。”

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())); 
    } 

} 
+0

应该说您的应用程序标题栏上的Intellij版本号。如果没有,你可以在'Help - > About'找到它, – 2014-10-09 20:18:59

回答

16

除了File > Project Structure > Project > Project Language Level其他有提及,
您也应该检查File > Project Structure > **Modules** > Sources > Project Language Level并设置为8

8

去,如果它是8.0

3

除了错误的语言水平这行代码也有编译错误

File > Project Structure > Project > Project Language Level 

检查(该+运营商不能适用于由返回voidSystem.out.println)。

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

</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> 

同构建项目修复的maven编译器插件可以使用gradle这个做这个properties

compileJava.sourceCompatibility 
compileJava.targetCompatibility 

而且还要检查如前所述。

文件>项目结构>项目>项目语言水平

+0

这对我有效,辉煌 – 2015-05-28 20:20:22