1. ホーム

[解決済み】Javaの関数ポインタの最も近い代用品は何ですか?

2022-04-14 18:08:58

質問

10行程度のメソッドを持っています。 私は、1行のコードを変更する小さな計算を除いて、まったく同じことをするメソッドをもっと作りたいと思っています。 これは、その1行を置き換えるために関数ポインタを渡すのに完璧なアプリケーションですが、Javaには関数ポインタがありません。 何かいい方法はないでしょうか?

どのように解決する?

匿名インナークラス

で渡される関数があるとします。 String パラメータを返します。 int .

まず、既存のものを再利用できない場合は、その関数を唯一のメンバーとするインターフェースを定義する必要があります。

interface StringFunction {
    int func(String param);
}

ポインタを受け取るメソッドは、単に StringFunction のインスタンスを作成します。

public void takingMethod(StringFunction sf) {
   int i = sf.func("my string");
   // do whatever ...
}

そして、このように呼ばれることになる。

ref.takingMethod(new StringFunction() {
    public int func(String param) {
        // body
    }
});

EDITです。 Java 8では、ラムダ式で呼び出すことができました。

ref.takingMethod(param -> bodyExpression);