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メソッドで引数を渡して戻り値を取得しています。
関連の記事