Java での関数ポインターの作成
Java には、関数を引数として他の関数に渡すためによく使用される関数ポインターの概念がありません。ただし、匿名内部クラスなど、同様の機能を提供する代替手段もあります。
複数のメソッド間で異なる小さな計算を含むメソッドを考えてみましょう。理想的な解決策は、そのコード行を処理する関数ポインターを渡すことです。
匿名の内部クラスをレスキューに
匿名の内部クラスを使用すると、別のクラスを定義することなく、コード内で直接インターフェイスまたは抽象クラスのインスタンスを作成できます。この手法は、Java で関数ポインタをシミュレートするために使用できます。
たとえば、整数を返す String パラメータを持つ関数を渡したい場合は、次のインターフェイスを定義できます。
interface StringFunction { int func(String param); }
この関数ポインタを受け入れるメソッドは StringFunction インスタンスを受け取ります:
public void takingMethod(StringFunction sf) { int i = sf.func("my string"); // do whatever ... }
このメソッドは次のように呼び出すことができます:
takingMethod(new StringFunction() { public int func(String param) { // body } });
Java 8 以降では、次のことができます。ラムダ式を使用してこのコードを簡略化します。
takingMethod(param -> bodyExpression);
匿名内部クラスは、インターフェイス実装を通じて関数を引数として渡すことができるため、Java の関数ポインターの実行可能な代替手段を提供します。これにより、特定のタスク用に簡単にカスタマイズできる再利用可能なコード ブロックを作成できます。
以上がJava で関数ポインタをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。