2

可能重复:
Lambda 表达式在 Java 8 中不起作用?

带有 lambda 的简单、无意义的应用程序:

public static void main(String[] args) { FileFilter java = (File f) -> f.getName().endsWith(".java"); }

将其设置为使用 JDK 8。如果我不尝试使用 lambda,则编译/运行良好。

但是,如果我这样做,我会得到:

将 1 个源文件编译到 ...\JavaApplication1\build\classes ...JavaApplication1\src\javaapplication1\JavaApplication1.java:20:错误:-source 1.8 FileFilter java = (File f) -> f 中不支持 lambda 表达式.getName().endsWith(".java"); (使用 -source 8 或更高版本来启用 lambda 表达式)1 错误

似乎对它应该是源 8 还是源 1.8 感到困惑


现在可以在使用 lambda 特定版本时工作,例如以下运行良好:

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

public class JavaApplication1 {

    public static void main(String[] args) {
        Arrays.asList(new File("c:/").listFiles((File f) -> f.getName().endsWith(".txt")))
        .forEach( file-> {System.out.println(file);});
    }
}
4

2 回答 2

5

为了编译 lambda 表达式,您需要从http://jdk8.java.net/lambda/下载 jdk 版本。您还会在包含 lambda 表达式的行上看到红色波浪线,但它会编译和运行得很好,所以请忽略它们 :)

于 2012-04-26T15:03:24.047 回答
2

下载 lambda 二进制文件,然后用这个新的 jdk8 替换旧的 jdk8,它支持二进制文件。

然后它应该工作。

于 2012-09-26T06:15:49.210 回答