Hier ist ein Beispiel.
interface Operator {
int operate(int a, int b);
}
class Calc {
public static int add(int a, int b) {
return a + b;
}
}
class Main {
public static void main(String[] args) {
// using method reference
int result = operate(1, 2, Calc::add);
// using lambda
int result = operate(1, 2, (a, b) -> Calc.add(a, b));
}
static int operate(int a, int b, Operator operator) {
return operator.operate(a, b);
}
}
Sie benötigen ein funktionelles Interface-Methode Referenz zu verwenden (in diesem Beispiel Operator
). Außerdem benötigen Sie eine Methode, die eine Instanz der funktionalen Schnittstelle als Parermater akzeptiert (in diesem Beispiel operate(int a, int b, Operator operator
).
UPDATE
Wenn Sie ein Objekt-Wrapper müssen, sondern nur die operate
Methode
static int operate(ObjectWrapper wrapper, Operator operator) {
return operator.operate(wrapper.getA(), wrapper.getB());
}
ändern und dann die operate
Methode aufrufen:
int result = operate(wrapper, Calc::add);
Warum glauben Sie, diese brauchen? – shmosel