Java Lambdas: Función Supplier

Breve explicación

La función Supplier<T> es una interfaz funcional en Java que no recibe argumentos y devuelve un valor de tipo T. Se utiliza comúnmente cuando necesitamos obtener o generar un valor sin necesidad de entrada externa. El método funcional de Supplier es get().

Ejemplo 1: Versión completa del cuerpo de la función Lambda
Java
package org.example.tinajero;

import java.util.function.Supplier;

public class LambdaSupplierExample {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ Supplier
         * 💡 No recibe ningún valor y retorna un valor de tipo especificado.
         */

        // Creamos un Supplier que devuelve una cadena aleatoria
        Supplier<String> generateRandomString = () -> {
            // Cuerpo completo de la función, generando un valor de retorno
            String[] names = {"Carlos", "Lucía", "Martín", "Andrea"};
            int index = (int) (Math.random() * names.length);
            return names[index];
        };

        // Usamos el Supplier para obtener una cadena aleatoria
        System.out.println("Nombre aleatorio: " + generateRandomString.get());

        // Creamos otro Supplier que devuelve un número aleatorio entre 1 y 100
        Supplier<Integer> generateRandomNumber = () -> {
            // Retornamos un número aleatorio generado dentro del rango especificado
            return (int) (Math.random() * 100) + 1;
        };

        // Usamos el Supplier para obtener un número aleatorio
        System.out.println("Número aleatorio: " + generateRandomNumber.get());
        
    }
    
}

Ejemplo 2: Reducción de la expresión Lambda
Java
package org.example.tinajero;

import java.util.function.Supplier;

public class LambdaSupplierExampleSimplified {

    public static void main(String[] args) {
    	
        /*
         * 🛠️ Supplier
         * 💡 No recibe ningún valor y retorna un valor de tipo especificado.
         */

        // Versión simplificada del Supplier que devuelve una cadena aleatoria
        Supplier<String> generateRandomString = () -> {
            // Reducción del código, manteniendo el mismo comportamiento
            String[] names = {"Carlos", "Lucía", "Martín", "Andrea"};
            return names[(int) (Math.random() * names.length)];
        };

        // Ejecutamos el Supplier para obtener la cadena aleatoria
        System.out.println("Nombre aleatorio: " + generateRandomString.get());

        // Versión simplificada del Supplier que devuelve un número aleatorio entre 1 y 100
        Supplier<Integer> generateRandomNumber = () -> (int) (Math.random() * 100) + 1;

        // Usamos el Supplier para obtener un número aleatorio
        System.out.println("Número aleatorio: " + generateRandomNumber.get());
        
    }
    
}