ホームページ  >  記事  >  Java  >  Java のラムダ式の理解をテストして学習しましょう

Java のラムダ式の理解をテストして学習しましょう

php是最好的语言
php是最好的语言オリジナル
2018-08-01 12:03:072166ブラウズ

雑談:

JDK8 が出てきてから長い時間が経ちましたが、最初に出たときに少しだけ知って、その後捨ててしまいましたが、今また手に取っています。今はJDK11ですが。

この記事は継続更新モードになります。

テキスト:

Java8 の新機能では、次のように記述できます:

public static void main(String[] args) {
        Supplier<Integer> supplier = ()->1;
        Consumer<String> consumer = (a)-> System.out.println(a);
        System.out.println(supplier.get());
        consumer.accept("test");
    }

出力:

1
test

Process finished with exit code 0

とてもおしゃれです。このような簡潔なコード、できますか?つまり、Java7

まず写真を盗んでLambdaを説明します

Java のラムダ式の理解をテストして学習しましょう

つまり、Lambda式対応するインターフェイスの実装を作成してから、値を割り当てるときに変数への変換にはコンパイラーを使用しますか?次のようにコンパイルされたコードを確認します。

public static void main(String[] args) {
        Supplier<Integer> supplier = () -> {
            return 1;
        };
        Consumer<String> consumer = (a) -> {
            System.out.println(a);
        };
        System.out.println(supplier.get());
        consumer.accept("test");
    }

コンパイラーはこの機能を実行しないため、JVM が Lambda 関数を実装している可能性があります。これについては後ほど詳しく説明します。 Mark 1

ここに書くと、ラムダ式によってコード量が削減されることがわかります。Java 8 より前では、この機能を実現するには、匿名の内部クラスを使用するか、インターフェイスを実装するクラスを作成するしかありませんでした。以下の通り

Supplier<Integer> supplier = new Supplier<Integer>() {
            @Override
            public Integer get() {
                return 1;
            }
        };

実際には、Lambdaに付随するインターフェースの方が気になります

@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}
rree

これで、FunctionalInterfaceを使用して、どのインターフェースがJDK8の関数インターフェースであるかを確認できます

Java のラムダ式の理解をテストして学習しましょう

そのうちの 1 つを選択してください。最も人気のあるもののうち 2 つは、テストして学習するためにここにあります

ああ、記事を読んで非常に重要な段落を見つけたので、話を中断させてください (実際には、関数型インターフェイスは非常に壊れやすいです:開発者がインターフェイスに関数を追加すると、そのインターフェイスは機能インターフェイスではなくなり、コンパイル エラーが発生します。コード レベルでこの脆弱性を克服し、インターフェイスが機能インターフェイスであることを明示的に示すために、Java 8 は特別なインターフェイスを提供します。注釈)

私が選択したのは、ArrayList と Optional の 2 つのクラスで、どちらも非常によく使用されるクラスです。

関連記事:

Javaのラムダ式を深く理解する

Javaのラムダ式の予備学習

関連動画:

JavaScript正規表現ビデオチュートリアル


以上がJava のラムダ式の理解をテストして学習しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。