Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Supplier: Datagenerering | Grunder och Funktionella Möjligheter med Stream API
Stream API

bookSupplier: Datagenerering

Så här implementeras det funktionella gränssnittet Supplier:

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

Den huvudsakliga uppgiften för metoden get() är att returnera ett objekt av typen T utan att ta några parametrar.

Praktisk användning av Supplier

Supplier används ofta i situationer där data behöver genereras vid behov. Detta kan vara användbart för lat initialisering, generering av slumpmässiga värden eller hämtning av värden från en extern källa.

Låt oss skapa ett system som genererar slumpmässiga lösenord. Med hjälp av det funktionella gränssnittet Supplier kan du enkelt organisera lösenordsgenerering på begäran.

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

Du skapar en Supplier som genererar ett slumpmässigt lösenord med 12 tecken. Lambda-uttrycket inuti Supplier använder klassen Random för att välja slumpmässiga tecken från en sträng.

Metoden get() utlöser denna lösenordsgenereringslogik endast vid behov, vilket möjliggör lat värdegenerering.

Lat generering

Inledningsvis skapar du Supplier, men koden inuti körs inte omedelbart. Detta är en viktig egenskap. Istället för att köra någon logik direkt (t.ex. generera ett lösenord), sparas den i Supplier som en instruktion att utföras senare vid behov.

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

Här körs inte koden inuti Supplier (lösenordsgenerering) omedelbart. Istället anger du, "När någon begär det, så här genereras lösenordet." När du sedan anropar get() på denna Supplier:

String generatedPassword = passwordSupplier.get();

Först då körs koden inuti Supplier, och lösenordet genereras. Detta är lat (fördröjd) exekvering.

Nyckelansvar

1. Vad gör gränssnittet Supplier i Java?

2. Vad händer om du anropar metoden get() två gånger på samma Supplier-objekt?

question mark

Vad gör gränssnittet Supplier i Java?

Select the correct answer

question mark

Vad händer om du anropar metoden get() två gånger på samma Supplier-objekt?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 2.33

bookSupplier: Datagenerering

Svep för att visa menyn

Så här implementeras det funktionella gränssnittet Supplier:

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

Den huvudsakliga uppgiften för metoden get() är att returnera ett objekt av typen T utan att ta några parametrar.

Praktisk användning av Supplier

Supplier används ofta i situationer där data behöver genereras vid behov. Detta kan vara användbart för lat initialisering, generering av slumpmässiga värden eller hämtning av värden från en extern källa.

Låt oss skapa ett system som genererar slumpmässiga lösenord. Med hjälp av det funktionella gränssnittet Supplier kan du enkelt organisera lösenordsgenerering på begäran.

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

Du skapar en Supplier som genererar ett slumpmässigt lösenord med 12 tecken. Lambda-uttrycket inuti Supplier använder klassen Random för att välja slumpmässiga tecken från en sträng.

Metoden get() utlöser denna lösenordsgenereringslogik endast vid behov, vilket möjliggör lat värdegenerering.

Lat generering

Inledningsvis skapar du Supplier, men koden inuti körs inte omedelbart. Detta är en viktig egenskap. Istället för att köra någon logik direkt (t.ex. generera ett lösenord), sparas den i Supplier som en instruktion att utföras senare vid behov.

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

Här körs inte koden inuti Supplier (lösenordsgenerering) omedelbart. Istället anger du, "När någon begär det, så här genereras lösenordet." När du sedan anropar get() på denna Supplier:

String generatedPassword = passwordSupplier.get();

Först då körs koden inuti Supplier, och lösenordet genereras. Detta är lat (fördröjd) exekvering.

Nyckelansvar

1. Vad gör gränssnittet Supplier i Java?

2. Vad händer om du anropar metoden get() två gånger på samma Supplier-objekt?

question mark

Vad gör gränssnittet Supplier i Java?

Select the correct answer

question mark

Vad händer om du anropar metoden get() två gånger på samma Supplier-objekt?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12
some-alt