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