関数オブジェクトとは
プログラムの実行中に生み出したり、代入したりできるものを第一級オブジェクトという。
例えば,インスタンスでやデータ(文字列など)やデータ構造(配列)など。 Javaでは、関数も第一級オブジェクトとして扱える。
特徴
- 変数に代入可能
- プログラム実行中に実体生成可能
- 引数として渡せる
関数オブジェクトの実態は、メソッドへの参照
変数へのメソッド参照の格納
変数名 = クラス名::そのクラスの静的メソッド名 変数名= インスタンス変数名::そのインスタンスのメソッド名
public class Main { public static Integer checkLength(String s) { return s.length(); } // メソッドを変数に代入して呼び出すサンプル public static void main(String[] args) { // lenメソッドへの参照を、変数funcに代入 Function<String, Integer> func = Main::checkLength; // 変数funcに代入されている処理ロジックを、引数"Java"で実行する int a = func.apply("ラーメン"); System.out.println("ラーメンの文字数は" + a + "文字です"); }