talosのプログラミング教室

Java Gold合格への道 ~メソッド参照~

スポンサーリンク

こんにちは。たろすです。

今回はメソッド参照について説明します。

メソッド参照とは

以下のような形式で記述されたものをメソッド参照と呼びます。

Integer::max

メソッド参照を使うには以下の条件があります。

・メソッドの呼び出しのみで完結する(例えばSysoutするだけなど)
・関数型インタフェースの抽象メソッドとラムダ式で呼び出しているメソッドのシグニチャが同じ

つまり、以下のようなラムダ式はメソッド参照に置き換えることができます。

ラムダ式

BinaryOperator<Integer> bo = (x, y) -> Integer.max(x, y);
System.out.println(bo.apply(10, 15));

メソッド参照

BinaryOperator<Integer> bo = Integer::max;
System.out.println(bo.apply(10, 15));

コンストラクタ参照

コンストラクタの呼び出しもメソッド参照で記述することができます。

メソッド参照で記述されたコンストラクタの呼び出しをコンストラクタ参照といいます。

ラムダ式

Function<String, String> function = s -> new String(s);
System.out.println(function.apply("Hello"));

コンストラクタ参照

Function<String, String> function = String::new;
System.out.println(function.apply("Hello"));

おわりに

今回はメソッド参照について説明しました。