Java の関数ポインターに最も近い代替手段
Java には関数ポインターがないため、多少の違いはあるものの同様のタスクを実行するメソッドを作成する際に課題が生じます。これに対処するための適切な代替案は、匿名内部クラスを使用することです。
匿名内部クラスの解決策
匿名内部クラスを使用すると、別の名前付き内部クラスを作成せずにメソッドを定義できます。クラス。これは、必要なメソッドを使用してインターフェイスを定義し、それを匿名の内部クラスに実装するというパターンに従います。
たとえば、文字列をパラメータとして受け取り、整数を返すメソッドを考えてみましょう。まず、インターフェイスを定義します。
interface StringFunction { int func(String param); }
この関数へのポインターを受け入れるメソッドは次のようになります。
public void takingMethod(StringFunction sf) { int i = sf.func("my string"); // do whatever ... }
このメソッドを呼び出すには、インターフェイス:
ref.takingMethod(new StringFunction() { public int func(String param) { // body } });
代わりに、Java 8 ではラムダ式が導入されており、これにより、より簡潔な構文が提供されます。目的:
ref.takingMethod(param -> bodyExpression);
以上がJava で関数ポインタをシミュレートする最良の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。