重複の可能性:
Java 8 でラムダ式が機能しない?
ラムダを使用したシンプルで無意味なアプリ:
public static void main(String[] args) { FileFilter java = (ファイル f) -> f.getName().endsWith(".java"); }
JDK 8 を使用するように設定します。ラムダを使用しない場合、コンパイル/正常に実行されます。
しかし、私が得た場合:
1 つのソース ファイルを ...\JavaApplication1\build\classes にコンパイルしています ...JavaApplication1\src\javaapplication1\JavaApplication1.java:20: エラー: ラムダ式は -source 1.8 ではサポートされていません FileFilter java = (File f) -> f .getName().endsWith(".java"); (ラムダ式を有効にするには -source 8 以上を使用してください) 1 エラー
ソース 8 にするかソース 1.8 にするかで混乱しているようです
ラムダ固有のバージョンを使用している場合に機能するようになりました。たとえば、以下は正常に実行されます。
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);});
}
}