Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Supplier: Generazione dei Dati | Fondamenti e Capacità Funzionali dello Stream API
Stream API

bookSupplier: Generazione dei Dati

Ecco come viene implementata l'interfaccia funzionale Supplier:

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

La responsabilità principale del metodo get() è restituire un oggetto di tipo T senza richiedere alcun parametro.

Uso pratico di Supplier

Supplier viene spesso utilizzato in situazioni in cui i dati devono essere generati su richiesta. Questo può essere utile per l'inizializzazione pigra, la generazione di valori casuali o il recupero di valori da una fonte esterna.

Creiamo un sistema che genera password casuali. Utilizzando l'interfaccia funzionale Supplier, è possibile organizzare facilmente la generazione di password su richiesta.

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

Si crea un Supplier che genera una password casuale di 12 caratteri. L'espressione lambda all'interno del Supplier utilizza la classe Random per selezionare caratteri casuali da una stringa.

Il metodo get() attiva questa logica di generazione della password solo quando necessario, consentendo la generazione pigra dei valori.

Generazione pigra

Inizialmente, si crea il Supplier, ma il codice al suo interno non viene eseguito immediatamente. Questa è una caratteristica importante. Invece di eseguire subito una logica (ad esempio, la generazione di una password), la si registra semplicemente all'interno del Supplier come istruzione da eseguire successivamente quando richiesto.

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

In questo caso, il codice all'interno del Supplier (generazione della password) non viene eseguito immediatamente. Invece, si sta indicando: "Quando richiesto, questa sarà la modalità di generazione della password." Ora, quando si invoca get() su questo Supplier:

String generatedPassword = passwordSupplier.get();

Solo allora il codice all'interno del Supplier viene eseguito e la password viene generata. Questa è esecuzione pigra.

Responsabilità principali

1. Cosa fa l'interfaccia Supplier in Java?

2. Cosa succede se si chiama il metodo get() due volte sullo stesso oggetto Supplier?

question mark

Cosa fa l'interfaccia Supplier in Java?

Select the correct answer

question mark

Cosa succede se si chiama il metodo get() due volte sullo stesso oggetto Supplier?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 12

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 2.33

bookSupplier: Generazione dei Dati

Scorri per mostrare il menu

Ecco come viene implementata l'interfaccia funzionale Supplier:

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

La responsabilità principale del metodo get() è restituire un oggetto di tipo T senza richiedere alcun parametro.

Uso pratico di Supplier

Supplier viene spesso utilizzato in situazioni in cui i dati devono essere generati su richiesta. Questo può essere utile per l'inizializzazione pigra, la generazione di valori casuali o il recupero di valori da una fonte esterna.

Creiamo un sistema che genera password casuali. Utilizzando l'interfaccia funzionale Supplier, è possibile organizzare facilmente la generazione di password su richiesta.

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

Si crea un Supplier che genera una password casuale di 12 caratteri. L'espressione lambda all'interno del Supplier utilizza la classe Random per selezionare caratteri casuali da una stringa.

Il metodo get() attiva questa logica di generazione della password solo quando necessario, consentendo la generazione pigra dei valori.

Generazione pigra

Inizialmente, si crea il Supplier, ma il codice al suo interno non viene eseguito immediatamente. Questa è una caratteristica importante. Invece di eseguire subito una logica (ad esempio, la generazione di una password), la si registra semplicemente all'interno del Supplier come istruzione da eseguire successivamente quando richiesto.

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

In questo caso, il codice all'interno del Supplier (generazione della password) non viene eseguito immediatamente. Invece, si sta indicando: "Quando richiesto, questa sarà la modalità di generazione della password." Ora, quando si invoca get() su questo Supplier:

String generatedPassword = passwordSupplier.get();

Solo allora il codice all'interno del Supplier viene eseguito e la password viene generata. Questa è esecuzione pigra.

Responsabilità principali

1. Cosa fa l'interfaccia Supplier in Java?

2. Cosa succede se si chiama il metodo get() due volte sullo stesso oggetto Supplier?

question mark

Cosa fa l'interfaccia Supplier in Java?

Select the correct answer

question mark

Cosa succede se si chiama il metodo get() due volte sullo stesso oggetto Supplier?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 12
some-alt