Java のパラメーターとしての関数
Java で、関数をパラメーターとして別の関数に渡すにはどうすればよいですか?
Java 8 以降
Java 8 を使用ラムダ式。抽象メソッドが 1 つだけあるクラスまたはインターフェイス (SAM タイプと呼ばれることもあります) がある場合 (例:
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();
If がラムダ式を使用しない場合式を使用すると、最後の 2 つの例は次のようになります:
new Thread(new Runnable() { someMethod(); }).start();
Java 8 より前のバージョン
一般的なパターンは、Callable などのインターフェイス内で関数を「ラップ」し、Callable を渡すことです。
public T myMethod(Callable<T> func) { return func.call(); }
このパターンは次のように呼ばれます。コマンドパターン。
インターフェイスは特定の目的のために作成するのが最善であることに注意してください。呼び出しを使用することを選択した場合は、上記の T を、文字列など、期待する戻り値のタイプに置き換えます。
以上がJava で関数をパラメータとして渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。