Breve explicación
La función BinaryOperator<T>
es una interfaz funcional en Java que acepta dos argumentos del mismo tipo T
y devuelve un resultado del mismo tipo T
. Se utiliza cuando se desea realizar una operación entre dos valores del mismo tipo. Es una especialización de BiFunction<T, T, T>
. El método funcional de BinaryOperator
es apply(T t1, T t2)
.
Ejemplo 1: Versión completa del cuerpo de la función Lambda
Java
package org.example.tinajero;
import java.util.function.BinaryOperator;
public class LambdaBinaryOperatorExample {
public static void main(String[] args) {
/*
* 🛠️ BinaryOperator
* 💡 Recibe dos valores del mismo tipo y retorna un valor del mismo tipo.
*/
// Creamos un BinaryOperator que suma dos números enteros
BinaryOperator<Integer> addNumbers = (n1, n2) -> {
// Cuerpo completo: retorna la suma de los dos números
return n1 + n2;
};
// Usamos el BinaryOperator para sumar 10 y 20
System.out.println("Suma de 10 y 20: " + addNumbers.apply(10, 20));
// Creamos otro BinaryOperator que encuentra la cadena más larga entre dos cadenas
BinaryOperator<String> longerString = (s1, s2) -> {
// Retorna la cadena más larga
return s1.length() > s2.length() ? s1 : s2;
};
// Aplicamos el BinaryOperator para comparar "Hola" y "MundoJava"
System.out.println("Cadena más larga entre 'Hola' y 'MundoJava': " + longerString.apply("Hola", "MundoJava"));
}
}
Ejemplo 2: Reducción de la expresión Lambda
Java
package org.example.tinajero;
import java.util.function.BinaryOperator;
public class LambdaBinaryOperatorExampleSimplified {
public static void main(String[] args) {
/*
* 🛠️ BinaryOperator
* 💡 Recibe dos valores del mismo tipo y retorna un valor del mismo tipo.
*/
// Versión simplificada del BinaryOperator que suma dos números
BinaryOperator<Integer> addNumbers = (n1, n2) -> n1 + n2;
// Ejecutamos el BinaryOperator para sumar 15 y 25
System.out.println("Suma de 15 y 25: " + addNumbers.apply(15, 25));
// Versión simplificada del BinaryOperator que encuentra la cadena más larga
BinaryOperator<String> longerString = (s1, s2) -> s1.length() > s2.length() ? s1 : s2;
// Usamos el BinaryOperator para comparar "Java" y "Code"
System.out.println("Cadena más larga entre 'Java' y 'Code': " + longerString.apply("Java", "Code"));
}
}