Javaで関数をパラメータとして渡すにはどうすればよいですか?

ジェイソン:

Javaでは、関数を別の関数の引数としてどのように渡すことができますか?

jk。

Java 8以降

単一の抽象メソッド(SAMタイプとも呼ばれるのみを持つクラスまたはインターフェースがある場合は、Java 8+ラムダ式を使用します。次に例を示します。

public interface MyInterface {
    String doSomething(int param1, String param2);
}

次に、MyInterfaceが使用されている任意の場所で、ラムダ式を置き換えることができます。

class MyClass {
    public MyInterface myInterface = (p1, p2) -> { return p2 + p1; };
}

たとえば、新しいスレッドをすばやく作成できます。

new Thread(() -> someMethod()).start();

さらに、メソッド参照構文を使用して、よりクリーンにします。

new Thread(this::someMethod).start();

ラムダ式がない場合、これらの最後の2つの例は次のようになります。

new Thread(new Runnable() { someMethod(); }).start();

Java 8より前

一般的なパターンはCallable、たとえばのようインターフェース内で「ラップ」することです。その後、Callableを渡します。

public T myMethod(Callable<T> func) {
    return func.call();
}

このパターンは、コマンドパターンと呼ばれます。

特定の用途向けのインターフェースを作成するのが最善であることを覚えておいてください。callableを使用することを選択した場合は、上記のTを、Stringなど、期待する任意のタイプの戻り値に置き換えます。

以下のコメントに応じて、次のように言うことができます。

public int methodToPass() { 
        // do something
}

public void dansMethod(int i, Callable<Integer> myFunc) {
       // do something
}

次に、おそらく匿名の内部クラスを使用して呼び出します。

dansMethod(100, new Callable<Integer>() {
   public Integer call() {
        return methodToPass();
   }
});

これは「トリック」ではないことに注意してください。これは、Javaの基本的な概念であり、関数ポインタに相当します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonで関数パラメーターとして:を渡すにはどうすればよいですか?

分類Dev

関数(独自のパラメーターを持つ)を関数のパラメーターとして渡すにはどうすればよいですか?

分類Dev

パラメータをパラメータとして持つ関数をPythonの別の関数に渡すにはどうすればよいですか?

分類Dev

パラメータとして渡された関数のパラメータタイプを検出するにはどうすればよいですか?

分類Dev

配列をパラメータとしてJavaグラフィック関数に渡すにはどうすればよいですか?

分類Dev

Rustでは、発散関数をパラメーターとして別の関数に渡すにはどうすればよいですか?

分類Dev

変数を使用して関数を呼び出し、それをパラメーターとして渡すにはどうすればよいですか?Jquery

分類Dev

オブジェクト属性を関数パラメーターとしてラムダ関数に渡すにはどうすればよいですか?

分類Dev

'lambda'キーワードなしでメソッドを関数パラメーターとして渡すにはどうすればよいですか?

分類Dev

入れ子関数を介して要素をパラメーターとして渡すにはどうすればよいですか?

分類Dev

関数にパラメーターとして渡される変数を変更するにはどうすればよいですか?

分類Dev

キーワード引数をパラメーターとして関数に渡すにはどうすればよいですか?

分類Dev

ユーザー定義型変数をパラメーターとして関数に渡すにはどうすればよいですか?

分類Dev

ViewControllerで、関数をパラメーターとして渡し、[weak self]を維持するにはどうすればよいですか?

分類Dev

渡された関数が関数もパラメーターとして受け取る場合、関数をパラメーターとしてCの関数に渡すにはどうすればよいですか?

分類Dev

plpgsql関数にパラメータとして渡された列名でクエリを実行するにはどうすればよいですか?

分類Dev

関数として渡された匿名メソッドのパラメーター値を取得するにはどうすればよいですか?

分類Dev

CAPLでユーザー定義関数パラメーターとして文字列を渡すにはどうすればよいですか?

分類Dev

関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

分類Dev

bash関数を介してvoidパラメーターを渡すことを許可するにはどうすればよいですか?

分類Dev

変数の内容をパラメーターとして関数に渡すにはどうすればよいですか?

分類Dev

Swiftの関数にパラメーターとしてクラスを渡すにはどうすればよいですか?

分類Dev

配列またはリストをパラメーターとしてPowerShell関数に渡すにはどうすればよいですか?

分類Dev

Rustで関数パラメーターとして可変ベクトルを渡すにはどうすればよいですか?

分類Dev

Swiftでtypealiasを関数パラメーターとして渡すにはどうすればよいですか?

分類Dev

関数パラメーターとして一致する列挙型バリアントを渡すにはどうすればよいですか?

分類Dev

反応する。パラメータを小道具として持つ関数を渡すにはどうすればよいですか?

分類Dev

開いたファイルハンドルを関数のパラメーターとして渡すにはどうすればよいですか?

分類Dev

ユーザー定義関数のパラメーターとしてリストを渡すにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonで関数パラメーターとして:を渡すにはどうすればよいですか?

  2. 2

    関数(独自のパラメーターを持つ)を関数のパラメーターとして渡すにはどうすればよいですか?

  3. 3

    パラメータをパラメータとして持つ関数をPythonの別の関数に渡すにはどうすればよいですか?

  4. 4

    パラメータとして渡された関数のパラメータタイプを検出するにはどうすればよいですか?

  5. 5

    配列をパラメータとしてJavaグラフィック関数に渡すにはどうすればよいですか?

  6. 6

    Rustでは、発散関数をパラメーターとして別の関数に渡すにはどうすればよいですか?

  7. 7

    変数を使用して関数を呼び出し、それをパラメーターとして渡すにはどうすればよいですか?Jquery

  8. 8

    オブジェクト属性を関数パラメーターとしてラムダ関数に渡すにはどうすればよいですか?

  9. 9

    'lambda'キーワードなしでメソッドを関数パラメーターとして渡すにはどうすればよいですか?

  10. 10

    入れ子関数を介して要素をパラメーターとして渡すにはどうすればよいですか?

  11. 11

    関数にパラメーターとして渡される変数を変更するにはどうすればよいですか?

  12. 12

    キーワード引数をパラメーターとして関数に渡すにはどうすればよいですか?

  13. 13

    ユーザー定義型変数をパラメーターとして関数に渡すにはどうすればよいですか?

  14. 14

    ViewControllerで、関数をパラメーターとして渡し、[weak self]を維持するにはどうすればよいですか?

  15. 15

    渡された関数が関数もパラメーターとして受け取る場合、関数をパラメーターとしてCの関数に渡すにはどうすればよいですか?

  16. 16

    plpgsql関数にパラメータとして渡された列名でクエリを実行するにはどうすればよいですか?

  17. 17

    関数として渡された匿名メソッドのパラメーター値を取得するにはどうすればよいですか?

  18. 18

    CAPLでユーザー定義関数パラメーターとして文字列を渡すにはどうすればよいですか?

  19. 19

    関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

  20. 20

    bash関数を介してvoidパラメーターを渡すことを許可するにはどうすればよいですか?

  21. 21

    変数の内容をパラメーターとして関数に渡すにはどうすればよいですか?

  22. 22

    Swiftの関数にパラメーターとしてクラスを渡すにはどうすればよいですか?

  23. 23

    配列またはリストをパラメーターとしてPowerShell関数に渡すにはどうすればよいですか?

  24. 24

    Rustで関数パラメーターとして可変ベクトルを渡すにはどうすればよいですか?

  25. 25

    Swiftでtypealiasを関数パラメーターとして渡すにはどうすればよいですか?

  26. 26

    関数パラメーターとして一致する列挙型バリアントを渡すにはどうすればよいですか?

  27. 27

    反応する。パラメータを小道具として持つ関数を渡すにはどうすればよいですか?

  28. 28

    開いたファイルハンドルを関数のパラメーターとして渡すにはどうすればよいですか?

  29. 29

    ユーザー定義関数のパラメーターとしてリストを渡すにはどうすればよいですか?

ホットタグ

アーカイブ