System.out::println の等価ラムダ式の探索
Java プログラミングでは、メソッド参照はメソッドを呼び出すための簡潔な構文を提供します。そのような例の 1 つが System.out::println です。これは、System.out クラスの println メソッドを参照するためのショートカットとして機能します。
このメソッド参照を使用すると、次のようなコードを作成できます。
numbers.forEach(System.out::println);
ここで、数値リストにはコンソールに出力される整数が含まれます。ただし、同じ機能を実現する対応するラムダ式があります。
このラムダ式を見つけるには、メソッド参照がどのように機能するかを理解する必要があります。 System.out::println を使用する場合、System.out の初期評価によって PrintStream のインスタンスが生成されます。これはラムダ式に格納され、println を呼び出すために使用されます。
この概念をラムダ式に直接変換すると、次の結果が得られます:
numbers.forEach(o -> { PrintStream p = Objects.requireNonNull(System.out); p.println(o); });
このラムダ式は、PrintStream インスタンスを明示的に取得し、それを変数 p に割り当てます。プレースホルダー o は、数値リストの各要素を表します。
このラムダ式は、評価された System.out インスタンスをキャプチャする System.out::println とまったく同等であることに注意してください。ただし、後者のメソッド参照には、より簡潔で読みやすいという利点があります。
したがって、ラムダ式は内部で何が起こっているかをより明示的に示しますが、メソッド参照 System.out::println は残ります。上記で例示したようなシナリオでは、貴重な構文上のショートカットです。
以上がJava の「System.out::println」に相当するラムダ式は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。