Java メソッド参照とコンストラクタ参照のサンプル

Javaのメソッド参照とコンストラクタ参照のサンプルです。

目次

サンプル メソッド参照
  静的メソッドの場合のメソッド参照
  コンストラクタ参照

メソッド参照

インスタンスの変数::メソッド名

メソッド参照のサンプルです。

package test1;

import java.util.function.Function;

public class Test1 {
	public static void main(String[] args) {

		Color c1 = new Color();		
		Function<String, String> color = c1::getName;
//		Function<String, String> color = a -> a + "です";
		
		System.out.println(color.apply("赤")); // 赤です
	}
}
class Color {
	public String getName(String name) {
		return name + "です";
	}
}

15~19行目は、クラスです。
8行目は、クラスをインスタンス化しています。
9行目は、メソッド参照です。インスタンスの変数:メソッド名です。
10行目は、ラムダ式です。9行目をコメントにし10行目のコメントを外しても同じ結果になります。
12行目は、applyメソッドで引数を渡して戻り値を取得しています。

静的メソッドの場合のメソッド参照

クラス名::メソッド名

静的メソッドの場合のメソッド参照のサンプルです。

package test1;
import java.util.function.Supplier;

public class Test1 {
	public static void main(String[] args) {		
		Supplier <String> c1 = Color::getName;
		System.out.println(c1.get()); // red
 	}
}
class Color {
	static String getName(){
		return "red";
	}
}

6行目は、メソッド参照です。クラス名:メソッド名です。

コンストラクタ参照

クラス名::new

コンストラクタ参照のサンプルです。

package test1;

import java.util.function.Supplier;

public class Test1 {
	public static void main(String[] args) {
		
		Supplier <Color> c1 =  Color::new;
		System.out.println(c1.get().getName("赤")); // 赤です
	}
}
class Color {
	public String getName(String name) {
		return name + "です";
	}
}

12~16行目は、クラスです。
8行目は、コンストラクタ参照で、クラスをインスタンス化しています。
9行目は、getメソッドでインスタンスを取得し、getNameメソッドで引数を渡して戻り値を取得しています。

関連の記事

Java ラムダ式で関数型インターフェースを使用

△上に戻る