Java の関数ポインターの代替
Java には関数ポインターがないため、モジュール式の再利用可能なコードの作成が妨げられる可能性があります。ただし、匿名内部クラスという解決策があります。
単一行の計算を除いて同一の操作を実行する複数のメソッドの要件を考えてみましょう。理想的には、関数ポインターを渡すだけで十分ですが、Java はそれをサポートしていません。別の方法は、目的の関数を唯一のメンバーとして持つインターフェイスを定義することです。
たとえば、文字列を受け取り、整数を返す関数を定義するには、次のようにします。
interface StringFunction { int func(String param); }
ここで、関数ポインタを受け入れるメソッドは StringFunction インスタンスを受け取ることができます:
public void takingMethod(StringFunction sf) { int i = sf.func("my string"); // do other operations ... }
このメソッドを呼び出すと次のようになります:
ref.takingMethod(new StringFunction() { public int func(String param) { // Implementation for the single changed line } });
Java 8 では、ラムダ式を使用してこれをさらに簡略化できます。 :
ref.takingMethod(param -> { // Implementation for the single changed line });
匿名の内部クラスまたはラムダ式を利用することで、Java プログラマは関数ポインタの機能を実現し、柔軟性とコードの再利用性を実現できます。
以上がJava はモジュールコードの関数ポインターをどのように模倣できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。