简单,毫无意义的应用程序与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不支持lambda表达式 FileFilter java =(File f) - > f.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);});
}
}
答案 0 :(得分:5)
为了编译lambda表达式,您需要从http://jdk8.java.net/lambda/下载jdk的版本。您还将在包含lambda表达式的行上获得红色波形,但它将编译并运行得很好,所以只需忽略它们:)
答案 1 :(得分:2)
Download the lambda binary然后将这个旧的jdk8替换为支持二进制文件的新jdk8。
然后它应该工作。