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 つだけ持つインターフェイスです。たとえば、この
java.util.function.Consumer
インターフェイスは、単一の入力引数を受け入れ、結果を返さない操作を表します。 -
メソッド参照の定義:メソッド参照を定義するには、メソッドのコンテキストに応じていくつかの方法があります。一般的な構文は次のとおりです。
arduinoコードをコピーする
ClassName::methodName
たとえば、
printMessage
クラスにメソッドがある場合Printer
、メソッド参照は になりますPrinter::printMessage
。 -
メソッド参照を渡す:メソッド参照を引数として、一致するシグネチャを持つ関数インターフェイスを受け入れるメソッドに渡します。
-
参照メソッドの呼び出し:メソッド参照を受け取るメソッド内で、関数インターフェイスのメソッドを使用して参照メソッドを呼び出すことができます。これは基本的に、メソッド参照を通じてメソッドを呼び出します。
カスタム クラスを使用した例を次に示します。
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
、 のメソッドを使用して、メソッド参照を通じてメソッドを呼び出します。Consumer
printMessage
特に関数型インターフェイスやストリームを操作する場合、メソッド参照は定型文を減らして読みやすさを向上させることでコードを簡素化することに注意してください。