Java のメソッド参照は、メソッドやコンストラクターを明示的に呼び出さずに参照する方法を提供します。これらは、単純なラムダ式を記述するための短縮形と考えることができます。
主なメソッド参照は、静的であることも、インスタンスに関連していることもあります。
Integer::sum; System.out::println;
これらは、静的メソッド参照 (バインドされた参照とも呼ばれる) の例です。
ただし、次のことを考慮してください。
String::concat
ここで、concatis は静的メソッドではありませんが、これはどのように機能するのでしょうか?これは非バインド参照の例です。コンパイラは、コードの記述方法に基づいて、これがインスタンス メソッド参照であることを理解します。これにより、このようにメソッド呼び出しを簡略化することができます。
コードの記述方法によって、これらのタイプの参照 (特にバインドされていない参照) が決まります。 concat を例に挙げます:
((a, b) -> a + b, "Hello", "World"); // ----------------Is same as ------------- ((a, b) -> a.concat(b), "Hello", "World"); // This one could be replaced by mehod referencing // ----------------Alternative------------- (String::concat, "Hello", "World"); /* The use of 'a' as the first parameter and calling `concat `of 'a' itself gives the compiler an idea of how it should decode `String::concat`*/
したがって、完全なラムダを書き出す代わりに、メソッド参照を使用して簡略化できます。
学び続けますか?
以上がメソッド参照に関する混乱の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。