Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java 8 Lambda Expressions meistern: Funktionale Programmierung leicht gemacht

Was sind Lambda Expressions?

Lambda Expressions (JSR 335) ermöglichen funktionale Programmierung in Java: Verhalten als Daten weiterreichen, ohne anonyme Klassen-Boilerplate. Ein Lambda implementiert ein Functional Interface (Interface mit genau einer abstrakten Methode).

Syntax

(parameter) -> ausdruck
(parameter) -> { anweisungen; return wert; }

Vereinfachungen

Beispiel: Rechenoperationen & Grüße

public class LambdaDemo {
    public static void main(String[] args) {
        LambdaDemo demo = new LambdaDemo();

        // Functional Interfaces
        MathOp add = (int a, int b) -> a + b;
        MathOp sub = (a, b) -> a - b;               // Typinferenz
        MathOp mul = (int a, int b) -> { return a * b; }; // Block + return
        MathOp div = (int a, int b) -> a / b;

        System.out.println("10 + 5 = " + demo.operate(10, 5, add));
        System.out.println("10 - 5 = " + demo.operate(10, 5, sub));
        System.out.println("10 * 5 = " + demo.operate(10, 5, mul));
        System.out.println("10 / 5 = " + demo.operate(10, 5, div));

        // Ohne Parameter-Typ, ohne Klammern
        Greeting g1 = msg -> System.out.println("Hallo " + msg);
        // Mit Klammern
        Greeting g2 = (msg) -> System.out.println("Hallo " + msg);

        g1.say("Anna");
        g2.say("Bernd");
    }

    interface MathOp { int op(int a, int b); }
    interface Greeting { void say(String msg); }

    private int operate(int a, int b, MathOp op) { return op.op(a, b); }
}

Ausgabe:

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
10 / 5 = 2
Hallo Anna
Hallo Bernd

Wichtige Punkte

Scope-Beispiel

public class ScopeDemo {
    final static String GRUSS = "Hallo ";

    public static void main(String[] args) {
        Greeting g = name -> System.out.println(GRUSS + name); // Static final OK
        g.say("Welt");
    }
    interface Greeting { void say(String name); }
}

Häufige Functional Interfaces (java.util.function)

Interface Methode Beschreibung
Predicate<T> boolean test(T t) Testet Bedingung.
Consumer<T> void accept(T t) Verbraucht Wert, kein Return.
Function<T,R> R apply(T t) Transformiert T → R.
Supplier<T> T get() Liefert Wert ohne Input.
UnaryOperator<T> T apply(T t) Spezialfall Function.
BinaryOperator<T> T apply(T t1, T t2) Kombiniert zwei T zu einem T.

Fazit

Lambdas sind der Türöffner für funktionale Programmierung in Java. Sie machen Code kürzer, lesbarer und ermöglichen die mächtige Stream-API. Verstehen Sie Functional Interfaces, um Lambdas effektiv einzusetzen.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Ausdrücke, Anweisungen und Blöcke verstehen
  3. Java Kommentare: Typen, Verwendung und Best Practices
  4. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  5. Java Strings meistern: Erstellung, Methoden und Best Practices
  6. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  7. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  8. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  9. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  10. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität