関数とは
何らかの入力を受け、処理を行い、出力を返すもの。
このため、メソッドも関数の一種になる。
戻り値を返す関数の代入
関数は変数に代入できるという特徴を有しています。そのため、関数の一種であるメソッドを変数に代入することができます。
import java.util.function.Function;
public class Main {
// 文字を受け取り、その文字数を返す関数
public static Integer len(String word) {
return word.length();
}
public static void main(String[] args) {
// 変数funcにlenメソッドへの参照を代入
Function<String, Integer> func = Main::len;
// applyで代入された関数を適用
int a = func.apply("Tokyo");
System.out.println(a);
}
}
*Function
関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用可能
メソッドのアドレスの格納
変数名 = クラス名::そのクラスの静的メソッド名
変数名 = インスタンス名::そのインスタンスのメソッド名
戻り値を返さない関数
public static void main(String[] args) {
Consumer<String> func = System.out::println;
// acceptで、代入された関数を適用
func.accept("Tokyo");
}
引数がない関数を格納する
public static void main(String[] args) {
Supplier<String> func = System::lineSeparator;
// acceptで、代入された関数を適用
System.out.println("Tokyo" + func.get() + "OSAKA");
}
参考資料
スッキリわかるJava入門 実践編 第3版 (スッキリわかる入門シリーズ)