パラメータとして渡される/呼び出される Java メソッド

import java.util.function.Consumer;

class Printer {
    public void printMessage(String message) {
        System.out.println(message);
    }
}

public class MethodReferenceExample {
    public static void main(String[] args) {
        Printer printer = new Printer();

        // Method reference to an instance method
        Consumer<String> messagePrinter = printer::printMessage;

        // Call the referenced method through the functional interface
        messagePrinter.accept("Hello, world!");
    }
}

---chatgpt の回答より

Java では、メソッド参照は、既存のメソッドを参照し、それを渡したり呼び出したりするためのパラメータとして使用するための省略表記です。メソッド参照は、Java 8 の関数型インターフェイスや Streams API などの関数型プログラミングのコンテキストでよく使用されます。これにより、メソッドを第一級市民として扱うことができ、簡潔で読みやすいコードが可能になります。

メソッド参照を使用するにはさまざまな方法がありますが、一般的なシナリオの 1 つは、関数インターフェイスを受け入れる別のメソッドにメソッド参照を渡し、その関数インターフェイスを通じて参照先のメソッドを呼び出すことです。プロセスを段階的に見てみましょう。

  1. 関数インターフェイスを作成する:参照するメソッドのシグネチャと一致する関数インターフェイスが必要です。関数型インターフェイスは、抽象メソッドを 1 つだけ持つインターフェイスです。たとえば、このjava.util.function.Consumerインターフェイスは、単一の入力引数を受け入れ、結果を返さない操作を表します。

  2. メソッド参照の定義:メソッド参照を定義するには、メソッドのコンテキストに応じていくつかの方法があります。一般的な構文は次のとおりです。

    arduinoコードをコピーする
    ClassName::methodName

    たとえば、printMessageクラスにメソッドがある場合Printer、メソッド参照は になりますPrinter::printMessage

  3. メソッド参照を渡す:メソッド参照を引数として、一致するシグネチャを持つ関数インターフェイスを受け入れるメソッドに渡します。

  4. 参照メソッドの呼び出し:メソッド参照を受け取るメソッド内で、関数インターフェイスのメソッドを使用して参照メソッドを呼び出すことができます。これは基本的に、メソッド参照を通じてメソッドを呼び出します。

カスタム クラスを使用した例を次に示します。

import java.util.function.Consumer;

class Printer {
    public void printMessage(String message) {
        System.out.println(message);
    }
}

public class MethodReferenceExample {
    public static void main(String[] args) {
        Printer printer = new Printer();

        // Method reference to an instance method
        Consumer<String> messagePrinter = printer::printMessage;

        // Call the referenced method through the functional interface
        messagePrinter.accept("Hello, world!");
    }
}

この例では、は type の単一パラメータを受け取り、値を返さないConsumer<String>関数インターフェイスです。Stringメソッドprinter::printMessage参照はこのシグネチャと一致するため、関数インターフェイスに割り当てることができますmessagePrinter次にaccept、 のメソッドを使用して、メソッド参照を通じてメソッドを呼び出します。ConsumerprintMessage

特に関数型インターフェイスやストリームを操作する場合、メソッド参照は定型文を減らして読みやすさを向上させることでコードを簡素化することに注意してください。

おすすめ

転載: blog.csdn.net/Goals1989/article/details/132361052