コツコツ学習ブログ

プログラマのweb上のメモ的なもの

関数オブジェクト

関数オブジェクトとは

プログラムの実行中に生み出したり、代入したりできるものを第一級オブジェクトという。

例えば,インスタンスでやデータ(文字列など)やデータ構造(配列)など。 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 + "文字です");
    }