[JDK dormido] Explicación detallada de la interfaz de programación funcional de Java UnaryOperator, BinaryOperator

Los dos hermanos Big U (Unario: un yuan) y Big B (Binario: binario) presentados hoy no son en realidad cosas nuevas, sino dos casos especiales. Veamos primero el código fuente de Kangkang.

Código fuente de UnaryOperator :

@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
    
    
    static <T> UnaryOperator<T> identity() {
    
    
        return t -> t;
    }
}

Código fuente de BinaryOperator:

@FunctionalInterface
public interface BinaryOperator<T> extends BiFunction<T,T,T> {
    
    
    
    public static <T> BinaryOperator<T> minBy(Comparator<? super T> comparator) {
    
    
        Objects.requireNonNull(comparator);
        return (a, b) -> comparator.compare(a, b) <= 0 ? a : b;
    }

    public static <T> BinaryOperator<T> maxBy(Comparator<? super T> comparator) {
    
    
        Objects.requireNonNull(comparator);
        return (a, b) -> comparator.compare(a, b) >= 0 ? a : b;
    }
}

Se puede ver en el código fuente que UnaryOperator hereda de Function <T, T>, y los parámetros y valores de retorno de Function son del mismo tipo T. Por lo tanto, cuando los parámetros y valores de retorno de Function son de del mismo tipo, podemos usar UnaryOperator en lugar de Function. De la misma manera, lo mismo ocurre con BinaryOperator, que hereda de BiFunction <T, T, T>. Cuando el valor de retorno y los tipos de los dos parámetros son los mismos, se puede usar BinaryOperator en lugar de BiFunction. Esto también se hace para simplificar el desarrollo. JDK solo proporciona implementaciones univariadas y binarias. Por supuesto, si lo necesita, también puede implementar TernaryOperator (ternario) usted mismo.

Function, como interfaz de programación de funciones que viene con JDK, tiene muchas variaciones y su estado es evidente, por lo que los amigos deben leer más y pensar más. JDK nos da mucho repollo, pero espero que puedas plantarlo en tu corazón. Sus semillas, aprende a integrarlas, aprende y aplicalas con flexibilidad.

También existen algunas variantes de Operador, como las siguientes:

Nombre de la interfaz parámetro Tipo de devolución describir
Operador IntUnario En t En t Tanto los parámetros como los valores de retorno son de tipo int.
OperadorUnarioDoble doble doble Los parámetros y valores de retorno son de tipo doble.
OperadorUnario Largo largo largo Los parámetros y valores de retorno son todos de tipo largo.
OperadorIntBinario (int, int) En t Tanto los parámetros como el valor de retorno son de tipo int.
OperadorBinarioDoble (doble doble) doble Tanto los parámetros como el valor de retorno son de tipo doble.
OperadorBinario Largo (largo largo) largo Tanto los parámetros como el valor de retorno son de tipo largo.

Bien, ahora se han introducido todas las interfaces de programación funcionales importantes de JDK.

Introducción a otras interfaces de programación funcionales:

[JDK durmiente] Explicación detallada del predicado de la interfaz de programación funcional de Java

[JDK durmiente] Explicación detallada de la interfaz de programación funcional de Java Consumidor, Función

[JDK durmiente] Proveedor de explicación detallada de la interfaz de programación funcional de Java

fin
El paraíso del desarrollo de Java

Supongo que te gusta

Origin blog.csdn.net/u012534326/article/details/107031082
Recomendado
Clasificación