Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Supplier: Datengenerierung | Grundlagen und Funktionale Möglichkeiten der Stream-API
Stream-API

bookSupplier: Datengenerierung

So wird das funktionale Interface Supplier implementiert:

@FunctionalInterface
public interface Supplier<T> {
    T get();
}

Die Hauptaufgabe der Methode get() besteht darin, ein Objekt vom Typ T zurückzugeben, ohne Parameter zu übernehmen.

Praktische Anwendung von Supplier

Supplier wird häufig in Situationen verwendet, in denen Daten bei Bedarf generiert werden müssen. Dies ist nützlich für Lazy Initialization, Generierung von Zufallswerten oder Abruf von Werten aus einer externen Quelle.

Erstellung eines Systems zur Generierung von zufälligen Passwörtern. Mit dem funktionalen Interface Supplier lässt sich die Passwortgenerierung auf Anfrage einfach organisieren.

Main.java

Main.java

copy
123456789101112131415161718192021222324
package com.example; import java.util.Random; import java.util.function.Supplier; public class Main { public static void main(String[] args) { // Supplier for generating random passwords Supplier<String> passwordSupplier = () -> { String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"; StringBuilder password = new StringBuilder(); Random random = new Random(); for (int i = 0; i < 12; i++) { int index = random.nextInt(characters.length()); password.append(characters.charAt(index)); } return password.toString(); }; // Generate and print the random password String generatedPassword = passwordSupplier.get(); System.out.println("Generated password: " + generatedPassword); } }

Ein Supplier wird erstellt, der ein zufälliges Passwort mit 12 Zeichen generiert. Der Lambda-Ausdruck innerhalb des Supplier verwendet die Klasse Random, um zufällige Zeichen aus einer Zeichenkette auszuwählen.

Die Methode get() löst diese Passwort-Generierungslogik nur bei Bedarf aus und ermöglicht so die träge Generierung von Werten.

Träge Generierung

Zunächst wird der Supplier erstellt, aber der Code darin wird nicht sofort ausgeführt. Dies ist eine wichtige Eigenschaft. Anstatt eine Logik sofort auszuführen (z. B. das Generieren eines Passworts), wird sie lediglich im Supplier als Anweisung gespeichert, die erst später bei Bedarf ausgeführt wird.

Supplier<String> passwordSupplier = () -> {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
    StringBuilder password = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 12; i++) {
        int index = random.nextInt(characters.length());
        password.append(characters.charAt(index));
    }
    return password.toString();
};

Hier wird der Code innerhalb des Supplier (Passwortgenerierung) nicht sofort ausgeführt. Stattdessen wird festgelegt: „Wenn jemand danach fragt, wird das Passwort auf diese Weise generiert.“ Erst beim Aufruf von get() auf diesem Supplier erfolgt die Ausführung:

String generatedPassword = passwordSupplier.get();

Erst dann wird der Code innerhalb des Supplier ausgeführt und das Passwort wird generiert. Dies ist eine faule Ausführung.

Hauptaufgaben

1. Was macht das Supplier-Interface in Java?

2. Was passiert, wenn Sie die Methode get() zweimal auf demselben Supplier-Objekt aufrufen?

question mark

Was macht das Supplier-Interface in Java?

Select the correct answer

question mark

Was passiert, wenn Sie die Methode get() zweimal auf demselben Supplier-Objekt aufrufen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 12

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.33

bookSupplier: Datengenerierung

Swipe um das Menü anzuzeigen

So wird das funktionale Interface Supplier implementiert:

@FunctionalInterface
public interface Supplier<T> {
    T get();
}

Die Hauptaufgabe der Methode get() besteht darin, ein Objekt vom Typ T zurückzugeben, ohne Parameter zu übernehmen.

Praktische Anwendung von Supplier

Supplier wird häufig in Situationen verwendet, in denen Daten bei Bedarf generiert werden müssen. Dies ist nützlich für Lazy Initialization, Generierung von Zufallswerten oder Abruf von Werten aus einer externen Quelle.

Erstellung eines Systems zur Generierung von zufälligen Passwörtern. Mit dem funktionalen Interface Supplier lässt sich die Passwortgenerierung auf Anfrage einfach organisieren.

Main.java

Main.java

copy
123456789101112131415161718192021222324
package com.example; import java.util.Random; import java.util.function.Supplier; public class Main { public static void main(String[] args) { // Supplier for generating random passwords Supplier<String> passwordSupplier = () -> { String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()"; StringBuilder password = new StringBuilder(); Random random = new Random(); for (int i = 0; i < 12; i++) { int index = random.nextInt(characters.length()); password.append(characters.charAt(index)); } return password.toString(); }; // Generate and print the random password String generatedPassword = passwordSupplier.get(); System.out.println("Generated password: " + generatedPassword); } }

Ein Supplier wird erstellt, der ein zufälliges Passwort mit 12 Zeichen generiert. Der Lambda-Ausdruck innerhalb des Supplier verwendet die Klasse Random, um zufällige Zeichen aus einer Zeichenkette auszuwählen.

Die Methode get() löst diese Passwort-Generierungslogik nur bei Bedarf aus und ermöglicht so die träge Generierung von Werten.

Träge Generierung

Zunächst wird der Supplier erstellt, aber der Code darin wird nicht sofort ausgeführt. Dies ist eine wichtige Eigenschaft. Anstatt eine Logik sofort auszuführen (z. B. das Generieren eines Passworts), wird sie lediglich im Supplier als Anweisung gespeichert, die erst später bei Bedarf ausgeführt wird.

Supplier<String> passwordSupplier = () -> {
    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
    StringBuilder password = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 12; i++) {
        int index = random.nextInt(characters.length());
        password.append(characters.charAt(index));
    }
    return password.toString();
};

Hier wird der Code innerhalb des Supplier (Passwortgenerierung) nicht sofort ausgeführt. Stattdessen wird festgelegt: „Wenn jemand danach fragt, wird das Passwort auf diese Weise generiert.“ Erst beim Aufruf von get() auf diesem Supplier erfolgt die Ausführung:

String generatedPassword = passwordSupplier.get();

Erst dann wird der Code innerhalb des Supplier ausgeführt und das Passwort wird generiert. Dies ist eine faule Ausführung.

Hauptaufgaben

1. Was macht das Supplier-Interface in Java?

2. Was passiert, wenn Sie die Methode get() zweimal auf demselben Supplier-Objekt aufrufen?

question mark

Was macht das Supplier-Interface in Java?

Select the correct answer

question mark

Was passiert, wenn Sie die Methode get() zweimal auf demselben Supplier-Objekt aufrufen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 12
some-alt