2

重複の可能性:
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);});
    }
}
4

2 に答える 2

5

ラムダ式をコンパイルするには、 http://jdk8.java.net/lambda/から jdk のバージョンをダウンロードする必要があります。ラムダ式を含む行にも赤い波線が表示されますが、問題なくコンパイルおよび実行されるため、無視してください :)

于 2012-04-26T15:03:24.047 に答える
2

ラムダ バイナリをダウンロードし、古い jdk8 を、バイナリをサポートするこの新しい jdk8 に置き換えます。

その後、動作するはずです。

于 2012-09-26T06:15:49.210 に答える