Samouczki Java

Jawa DOM Wprowadzenie do Javy Rozpocznij Java Składnia Javy Komentarze Java Zmienne Javy Typy danych Java Rzutowanie typu Java Operatory Java Ciągi Java Matematyka Java Java logiczne Java, jeśli...inne Przełącznik Java Java podczas pętli Java dla pętli Przerwa/Kontynuacja w Javie Tablice Java

Metody Java

Metody Java Parametry metody Java Przeciążanie metody Java Zakres Java Rekurencja Java

Klasy Java

Java OOP Klasy/obiekty Java Atrybuty klas Java Metody klas Java Konstruktory Javy Modyfikatory Java Enkapsulacja Javy Pakiety Java / API Dziedziczenie Javy Polimorfizm Javy Klasy wewnętrzne Java Abstrakcja Java Interfejs Java Wyliczenia Java Wejście użytkownika Java Data Java Lista tablic Java Połączona lista Java Java HashMap Zestaw skrótów Java Iterator Javy Klasy opakowujące Java Wyjątki Java Java RegEx Wątki Java Jawa Lambda

Obsługa plików Java

Pliki Java Tworzenie/zapis plików Java Odczytywanie plików Java Usuń pliki Java

Jak to zrobić

Dodaj dwie liczby

Odniesienie do Javy

Słowa kluczowe Java Metody ciągów Java Metody matematyczne w języku Java

Przykłady Javy

Przykłady Javy Kompilator Javy Ćwiczenia Java Quiz Java Certyfikat Java


Wyrażenia lambda w języku Java


Wyrażenia lambda w języku Java

Wyrażenia lambda zostały dodane w Javie 8.

Wyrażenie lambda to krótki blok kodu, który pobiera parametry i zwraca wartość. Wyrażenia lambda są podobne do metod, ale nie wymagają nazwy i można je zaimplementować bezpośrednio w treści metody.


Składnia

Najprostsze wyrażenie lambda zawiera jeden parametr i wyrażenie:

parameter -> expression

Aby użyć więcej niż jednego parametru, umieść je w nawiasach:

(parameter1, parameter2) -> expression

Wyrażenia są ograniczone. Muszą natychmiast zwrócić wartość i nie mogą zawierać zmiennych, przypisań ani instrukcji, takich jak iflub for. Aby wykonać bardziej złożone operacje, można użyć bloku kodu z nawiasami klamrowymi. Jeśli wyrażenie lambda musi zwrócić wartość, blok kodu powinien zawierać returninstrukcję.

(parameter1, parameter2) -> { code block }

Korzystanie z wyrażeń lambda

Wyrażenia lambda są zwykle przekazywane jako parametry do funkcji:

Przykład

Użyj wyrażenia lamba w ArrayListmetodzie forEach(), aby wydrukować każdy element na liście:

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

Wyrażenia lambda mogą być przechowywane w zmiennych, jeśli typem zmiennej jest interfejs, który ma tylko jedną metodę. Wyrażenie lambda powinno mieć taką samą liczbę parametrów i taki sam typ zwracany jak ta metoda. Java ma wiele wbudowanych tego rodzaju interfejsów, takich jak Consumerinterfejs (znajdujący się w java.utilpakiecie) używany przez listy.

Przykład

Użyj Consumerinterfejsu Java do zapisania wyrażenia lambda w zmiennej:

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

Aby użyć wyrażenia lambda w metodzie, metoda powinna mieć parametr z interfejsem jednej metody jako jej typ. Wywołanie metody interfejsu spowoduje uruchomienie wyrażenia lambda:

Przykład

Utwórz metodę, która jako parametr przyjmuje wyrażenie lambda:

interface StringFunction {
  String run(String str);
}

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    printFormatted("Hello", exclaim);
    printFormatted("Hello", ask);
  }
  public static void printFormatted(String str, StringFunction format) {
    String result = format.run(str);
    System.out.println(result);
  }
}