Breve explicación
La función Function<T, R>
es una interfaz funcional en Java que acepta un argumento de tipo T
y devuelve un resultado de tipo R
. Se utiliza cuando necesitamos transformar o mapear un valor de entrada en otro tipo de valor de salida. El método funcional de Function
es apply(T t)
.
Ejemplo 1: Versión completa del cuerpo de la función Lambda
Java
package org.example.tinajero;
import java.util.function.Function;
public class LambdaFunctionExample {
public static void main(String[] args) {
/*
* 🛠️ Function
* 💡 Recibe un valor de tipo T y retorna un valor de tipo R.
*/
// Creamos una Function que convierte una cadena a su longitud
Function<String, Integer> stringLength = (str) -> {
// Cuerpo completo: retorna la longitud de la cadena
return str.length();
};
// Usamos la Function para obtener la longitud de "Hola Mundo"
System.out.println("Longitud de 'Hola Mundo': " + stringLength.apply("Hola Mundo"));
// Creamos otra Function que convierte una temperatura en grados Celsius a Fahrenheit
Function<Double, Double> celsiusToFahrenheit = (celsius) -> {
// Cálculo completo de la conversión
return (celsius * 9/5) + 32;
};
// Aplicamos la Function para convertir 25°C a Fahrenheit
System.out.println("25°C en Fahrenheit: " + celsiusToFahrenheit.apply(25.0));
}
}
Ejemplo 2: Reducción de la expresión Lambda
Java
package org.example.tinajero;
import java.util.function.Function;
public class LambdaFunctionExampleSimplified {
public static void main(String[] args) {
/*
* 🛠️ Function
* 💡 Recibe un valor de tipo T y retorna un valor de tipo R.
*/
// Versión simplificada de la Function que convierte una cadena a su longitud
Function<String, Integer> stringLength = str -> str.length();
// Ejecutamos la Function para obtener la longitud de "Java Lambda"
System.out.println("Longitud de 'Java Lambda': " + stringLength.apply("Java Lambda"));
// Versión simplificada de la Function que convierte Celsius a Fahrenheit
Function<Double, Double> celsiusToFahrenheit = celsius -> (celsius * 9/5) + 32;
// Aplicamos la Function para convertir 30°C a Fahrenheit
System.out.println("30°C en Fahrenheit: " + celsiusToFahrenheit.apply(30.0));
}
}