Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Supplier: Datagenerering | Grunnleggende og Funksjonelle Egenskaper ved Stream API
Stream-API

bookSupplier: Datagenerering

Slik implementeres den funksjonelle grensesnittet Supplier:

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

Hovedansvaret til metoden get() er å returnere et objekt av typen T uten å ta noen parametere.

Praktisk bruk av Supplier

Supplier brukes ofte i situasjoner der data må genereres ved behov. Dette kan være nyttig for lat initialisering, generering av tilfeldige verdier eller henting av verdier fra en ekstern kilde.

La oss lage et system som genererer tilfeldige passord. Ved å bruke det funksjonelle grensesnittet Supplier, kan du enkelt organisere passordgenerering på forespørsel.

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 oppretter en Supplier som genererer et tilfeldig passord12 tegn. Lambda-uttrykket inne i Supplier bruker klassen Random til å velge tilfeldige tegn fra en streng.

Metoden get() utløser denne passordgenereringslogikken kun ved behov, noe som muliggjør lat generering av verdier.

Lat generering

Først oppretter du Supplier, men koden inni den kjøres ikke umiddelbart. Dette er en viktig egenskap. I stedet for å utføre logikk med en gang (for eksempel å generere et passord), lagres det bare i Supplier som en instruksjon som skal utføres senere ved 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();
};

Her blir ikke koden inne i Supplier (passordgenerering) kjørt umiddelbart. I stedet angis det: "Når noen ber om det, er dette måten passordet genereres på." Når get() kalles på denne Supplier:

String generatedPassword = passwordSupplier.get();

Først da kjøres koden inne i Supplier, og passordet genereres. Dette er lat evaluering.

Nøkkelansvar

1. Hva gjør Supplier-grensesnittet i Java?

2. Hva skjer hvis du kaller get()-metoden to ganger på det samme Supplier-objektet?

question mark

Hva gjør Supplier-grensesnittet i Java?

Select the correct answer

question mark

Hva skjer hvis du kaller get()-metoden to ganger på det samme Supplier-objektet?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.33

bookSupplier: Datagenerering

Sveip for å vise menyen

Slik implementeres den funksjonelle grensesnittet Supplier:

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

Hovedansvaret til metoden get() er å returnere et objekt av typen T uten å ta noen parametere.

Praktisk bruk av Supplier

Supplier brukes ofte i situasjoner der data må genereres ved behov. Dette kan være nyttig for lat initialisering, generering av tilfeldige verdier eller henting av verdier fra en ekstern kilde.

La oss lage et system som genererer tilfeldige passord. Ved å bruke det funksjonelle grensesnittet Supplier, kan du enkelt organisere passordgenerering på forespørsel.

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 oppretter en Supplier som genererer et tilfeldig passord12 tegn. Lambda-uttrykket inne i Supplier bruker klassen Random til å velge tilfeldige tegn fra en streng.

Metoden get() utløser denne passordgenereringslogikken kun ved behov, noe som muliggjør lat generering av verdier.

Lat generering

Først oppretter du Supplier, men koden inni den kjøres ikke umiddelbart. Dette er en viktig egenskap. I stedet for å utføre logikk med en gang (for eksempel å generere et passord), lagres det bare i Supplier som en instruksjon som skal utføres senere ved 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();
};

Her blir ikke koden inne i Supplier (passordgenerering) kjørt umiddelbart. I stedet angis det: "Når noen ber om det, er dette måten passordet genereres på." Når get() kalles på denne Supplier:

String generatedPassword = passwordSupplier.get();

Først da kjøres koden inne i Supplier, og passordet genereres. Dette er lat evaluering.

Nøkkelansvar

1. Hva gjør Supplier-grensesnittet i Java?

2. Hva skjer hvis du kaller get()-metoden to ganger på det samme Supplier-objektet?

question mark

Hva gjør Supplier-grensesnittet i Java?

Select the correct answer

question mark

Hva skjer hvis du kaller get()-metoden to ganger på det samme Supplier-objektet?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12
some-alt