Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Supplier: Gegevensgeneratie | Fundamenten en Functionele Mogelijkheden van Stream API
Stream-API

bookSupplier: Gegevensgeneratie

Hier volgt de implementatie van de functionele interface Supplier:

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

De belangrijkste verantwoordelijkheid van de methode get() is het teruggeven van een object van het type T zonder parameters te accepteren.

Praktisch gebruik van Supplier

Supplier wordt vaak gebruikt in situaties waarin gegevens op aanvraag moeten worden gegenereerd. Dit is nuttig voor luie initialisatie, het genereren van willekeurige waarden of het ophalen van waarden uit een externe bron.

Laten we een systeem maken dat willekeurige wachtwoorden genereert. Met behulp van de functionele interface Supplier kan wachtwoordgeneratie op aanvraag eenvoudig worden georganiseerd.

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); } }

U maakt een Supplier aan die een willekeurig wachtwoord van 12 tekens genereert. De lambda-expressie binnen de Supplier gebruikt de klasse Random om willekeurige tekens uit een tekenreeks te selecteren.

De methode get() activeert deze wachtwoordgeneratielogica alleen wanneer dat nodig is, waardoor luie generatie van waarden mogelijk wordt.

Luie generatie

Aanvankelijk maakt u de Supplier aan, maar de code daarin wordt niet direct uitgevoerd. Dit is een belangrijke eigenschap. In plaats van direct logica uit te voeren (bijvoorbeeld het genereren van een wachtwoord), legt u deze vast in de Supplier als een instructie die later wordt uitgevoerd wanneer dat nodig is.

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 wordt de code binnen de Supplier (wachtwoordgeneratie) niet direct uitgevoerd. In plaats daarvan wordt aangegeven: "Wanneer iemand erom vraagt, wordt het wachtwoord op deze manier gegenereerd." Wanneer vervolgens get() op deze Supplier wordt aangeroepen:

String generatedPassword = passwordSupplier.get();

Pas dan wordt de code binnen de Supplier uitgevoerd, en wordt het wachtwoord gegenereerd. Dit is luie uitvoering.

Belangrijkste verantwoordelijkheden

1. Wat doet de Supplier interface in Java?

2. Wat gebeurt er als je de methode get() twee keer aanroept op hetzelfde Supplier-object?

question mark

Wat doet de Supplier interface in Java?

Select the correct answer

question mark

Wat gebeurt er als je de methode get() twee keer aanroept op hetzelfde Supplier-object?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 12

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

Can you give more examples of how Supplier is used in real-world applications?

What is the difference between Supplier and other functional interfaces like Function or Predicate?

Can you explain more about lazy initialization and why it's useful?

Awesome!

Completion rate improved to 2.33

bookSupplier: Gegevensgeneratie

Veeg om het menu te tonen

Hier volgt de implementatie van de functionele interface Supplier:

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

De belangrijkste verantwoordelijkheid van de methode get() is het teruggeven van een object van het type T zonder parameters te accepteren.

Praktisch gebruik van Supplier

Supplier wordt vaak gebruikt in situaties waarin gegevens op aanvraag moeten worden gegenereerd. Dit is nuttig voor luie initialisatie, het genereren van willekeurige waarden of het ophalen van waarden uit een externe bron.

Laten we een systeem maken dat willekeurige wachtwoorden genereert. Met behulp van de functionele interface Supplier kan wachtwoordgeneratie op aanvraag eenvoudig worden georganiseerd.

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); } }

U maakt een Supplier aan die een willekeurig wachtwoord van 12 tekens genereert. De lambda-expressie binnen de Supplier gebruikt de klasse Random om willekeurige tekens uit een tekenreeks te selecteren.

De methode get() activeert deze wachtwoordgeneratielogica alleen wanneer dat nodig is, waardoor luie generatie van waarden mogelijk wordt.

Luie generatie

Aanvankelijk maakt u de Supplier aan, maar de code daarin wordt niet direct uitgevoerd. Dit is een belangrijke eigenschap. In plaats van direct logica uit te voeren (bijvoorbeeld het genereren van een wachtwoord), legt u deze vast in de Supplier als een instructie die later wordt uitgevoerd wanneer dat nodig is.

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 wordt de code binnen de Supplier (wachtwoordgeneratie) niet direct uitgevoerd. In plaats daarvan wordt aangegeven: "Wanneer iemand erom vraagt, wordt het wachtwoord op deze manier gegenereerd." Wanneer vervolgens get() op deze Supplier wordt aangeroepen:

String generatedPassword = passwordSupplier.get();

Pas dan wordt de code binnen de Supplier uitgevoerd, en wordt het wachtwoord gegenereerd. Dit is luie uitvoering.

Belangrijkste verantwoordelijkheden

1. Wat doet de Supplier interface in Java?

2. Wat gebeurt er als je de methode get() twee keer aanroept op hetzelfde Supplier-object?

question mark

Wat doet de Supplier interface in Java?

Select the correct answer

question mark

Wat gebeurt er als je de methode get() twee keer aanroept op hetzelfde Supplier-object?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 12
some-alt