Methoden als Lambda-Ausdrücke aber wie?

...komplette Frage anzeigen

3 Antworten

Wenn du eine Methode als Lambda ausdrücken willst, dann benötigst du die Methode selbst als Teil eines Interfaces.

Beispiel:

public interface Calculator {
    int calculate(int x, int y);
}

Dies wiederum sieht implementiert als anonyme innere Klasse dann so aus, wenn man: x + y möchte:

Calculator calc = new Calculator() {

  @Override
  public int calculate(int x, int y) {
    return x+y;
  }
};

Dies lässt sich dann als Lamda so darstellen:

Calculator calc = (x, y) -> x+y;
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von dvNaN
02.02.2017, 20:43

und dann z.B. in der main Methode:

System.out.println("2+5= "+calc.calculate(2,5));

0

Moinsen 

Eins vorweg ich bin kein Experte hatte aber das gleiche Problem wie du :)

Wie ich das Verstehe ersetzt ein Lambda ausdruck quasi eine innere Klasse naja...
Und ich würde sagen: Ja du brauchst ein Interface ( selbst definiert oder schon von java.util.functions oder so bereitgestellt)

Zur ersten Methode:

Predicate is n (Funktionelles) Interface. Siehe java.util.functions.Predicate
Also:

package Post.Packet;

import java.util.function.*;

class LambdaSonde
{
static Predicate istGerade = n -> n % 2 == 0;

public static void main(String[] args)
{
System.out.println("teste Zahl 4: " +istGerade.test(4));

}
}

Antwort bewerten Vielen Dank für Deine Bewertung

Hast du die richtige Version benutzt?

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?