ラムダは純粋に呼び出しサイトの構成要素です。ラムダの受信者は、ラムダが関与していることを知る必要はありません。代わりに、適切なメソッドでインターフェイスを受け入れます。
つまり、必要なものを正確に受け入れて返す機能的なインターフェイス (つまり、単一のメソッドを持つインターフェイス) を定義または使用します。
このため、Java 8 には一般的に使用されるインターフェイス タイプのセットが付属しています(JavaDoc に関するヒントを提供してくれたMaurice Naftalinjava.util.function
に感謝します)。
この特定のユースケースでjava.util.function.IntBinaryOperator
は、単一のint applyAsInt(int left, int right)
メソッドがあるため、次のように書くことができますmethod
:
static int method(IntBinaryOperator op){
return op.applyAsInt(5, 10);
}
ただし、独自のインターフェイスを定義して、次のように使用することもできます。
public interface TwoArgIntOperator {
public int op(int a, int b);
}
//elsewhere:
static int method(TwoArgIntOperator operator) {
return operator.op(5, 10);
}
次に、ラムダをパラメータとしてメソッドを呼び出します。
public static void main(String[] args) {
TwoArgIntOperator addTwoInts = (a, b) -> a + b;
int result = method(addTwoInts);
System.out.println("Result: " + result);
}
独自のインターフェースを使用すると、意図をより明確に示す名前を付けることができるという利点があります。