Interfaz de funciones en Java con ejemplos

La interfaz de función es parte del paquete java.util.function que se introdujo desde Java 8 para implementar la programación funcional en Java. Representa una función que toma un argumento y produce un resultado. Por lo tanto, esta interfaz funcional incluye 2 genéricos, a saber, los siguientes:

  • T : denota el tipo del argumento de entrada
  • R : denota el tipo de retorno de la función

La expresión lambda asignada a un objeto de tipo Función se usa para definir su aplicación() que finalmente aplica la función dada en el argumento.
 

Métodos en la interfaz de funciones

La interfaz de función consta de los siguientes 4 métodos que se enumeran y que se analizan más adelante de la siguiente manera:

  1. aplicar()
  2. y entonces()
  3. componer()
  4. identidad()

Método 1: aplicar()

Sintaxis: 

R apply(T t)

Parámetros: este método toma solo un parámetro t que es el argumento de la función

Tipo de devolución: este método devuelve el resultado de la función que es de tipo R.

Ejemplo 

Java

// Java Program to Illustrate Functional Interface
// Via apply() method
 
// Importing interface
import java.util.function.Function;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
        // Function which takes in a number
        // and returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Applying the function to get the result
        System.out.println(half.apply(10));
    }
}
Producción

5.0

Método 2: andThen()

Devuelve una función compuesta en la que la función parametrizada se ejecutará después de la primera. Si la evaluación de cualquiera de las funciones arroja un error, se transmite al llamador de la función compuesta.

Sintaxis:  

default <V> Function<T, V> 
andThen(Function<? super R, ? extends V> after)

donde V es el tipo de salida de la función posterior y de la función compuesta

Parámetros: este método acepta un parámetro después del cual es la función que se aplicará después de la actual.\

Valor devuelto: este método devuelve una función compuesta que aplica la función actual primero y luego la función posterior

Excepción: este método arroja NullPointerException si la función posterior es nula.

Ejemplo 1:

Java

// Java Program to illustrate addThen() method
 
// Importing interface
import java.util.function.Function;
 
// Main class
public class GFG {
 
    // main driver method
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Now treble the output of half function
        half = half.andThen(a -> 3 * a);
 
        // Applying the function to get the result
        // and printing on console
        System.out.println(half.apply(10));
    }
}
Producción

15.0

Ejemplo 2: para demostrar cuándo se devuelve NullPointerException.
 

Java

// Java Program to illustrate addThen() method
// When NullPointerException occurs
 
// Importing interface
import java.util.function.Function;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
 
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Try block to check for exce3ptions
        try {
 
            // Trying to pass null as parameter
            half = half.andThen(null);
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Print statement
            System.out.println("Exception thrown "
                               + "while passing null: "
                               + e);
        }
    }
}
Producción

Exception thrown while passing null: java.lang.NullPointerException

Método 3: componer()

Devuelve una función compuesta donde se ejecutará primero la función parametrizada y luego la primera. Si la evaluación de cualquiera de las funciones arroja un error, se transmite al llamador de la función compuesta.

Sintaxis:  

default <V> Function<V, R> 
compose(Function<? super V, ? extends T> before)

Donde V es el tipo de entrada de la función anterior y de la función compuesta

Parámetros: Este método acepta un parámetro antes del cual es la función a aplicar primero y luego la actual

Valor devuelto: este método devuelve una función compuesta que aplica la función actual después de la función parametrizada

Excepción: este método arroja NullPointerException si la función anterior es nula.

Ejemplo 1:

Java

// Java Program to illustrate compose() method
 
// Importing Function interface
import java.util.function.Function;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // However treble the value given to half function
        half = half.compose(a -> 3 * a);
 
        // Applying the function to get the result
        System.out.println(half.apply(5));
    }
}
Producción

7.5

Ejemplo 2: cuando se devuelve NullPointerException.
 

Java

// Java Program to illustrate compose() method
 
// Importing Function interface
import java.util.function.Function;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Try bloc kto check for exceptions
        try {
 
            // Trying to pass null as parameter
            half = half.compose(null);
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Print statement
            System.out.println("Exception thrown "
                               + "while passing null: "
                               + e);
        }
    }
}
Producción

Exception thrown while passing null: java.lang.NullPointerException

Método 4: identidad()

Este método devuelve una función que devuelve su único argumento.

Sintaxis:  

static <T> Function<T, T> identity()

donde T denota el tipo de argumento y el valor que se devolverá

Devoluciones: este método devuelve una función que devuelve su propio argumento

Ejemplo 

Java

// Java Program to Illustrate identity() method
 
// Importing Function interface
import java.util.function.Function;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns it
        Function<Integer, Integer> i = Function.identity();
 
        // Print statement
        System.out.println(i.apply(10));
    }
}
Producción

10

Publicación traducida automáticamente

Artículo escrito por psil123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *