約 10 行のコードからなるメソッドがあります。 1 行のコードを変更する小さな計算を除いて、まったく同じことを実行するメソッドをさらに作成したいと考えています。 これは、その 1 行を置き換えるために関数ポインターを渡すのに最適なアプリケーションですが、Java には関数ポインターがありません。 最善の代替策は何でしょうか。
ベストアンサー1
匿名内部クラス
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
}
});
編集: Java 8 では、ラムダ式を使用して呼び出すことができます。
ref.takingMethod(param -> bodyExpression);