Java 8 | Interfaz de consumidor en Java con ejemplos

Consumer Interface es una parte del paquete java.util.function que se ha introducido desde Java 8, para implementar la programación funcional en Java. Representa una función que toma un argumento y produce un resultado. Sin embargo, este tipo de funciones no devuelven ningún valor.
De ahí esta interfaz funcional que toma un genérico a saber: – 
 

  • T : denota el tipo del argumento de entrada a la operación

La expresión lambda asignada a un objeto de tipo Consumidor se usa para definir su accept() que eventualmente aplica la operación dada en su argumento. Los consumidores son útiles cuando no necesitan devolver ningún valor, ya que se espera que operen a través de efectos secundarios. 
 

Funciones en la interfaz del consumidor

La interfaz de consumidor consta de las siguientes dos funciones:
 

1. aceptar()

Este método acepta un valor y realiza la operación en el argumento dado
. Sintaxis: 
 

void accept(T t)

Parámetros: Este método toma un parámetro: 
 

  • t – el argumento de entrada

Devoluciones: este método no devuelve ningún valor.
A continuación se muestra el código para ilustrar el método accept():
Programa 1:
 

Java

// Java Program to demonstrate
// Consumer's accept() method
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
 
public class Main {
    public static void main(String args[])
    {
        // Consumer to display a number
        Consumer<Integer> display = a -> System.out.println(a);
 
        // Implement display using accept()
        display.accept(10);
 
        // Consumer to multiply 2 to every integer of a list
        Consumer<List<Integer> > modify = list ->
        {
            for (int i = 0; i < list.size(); i++)
                list.set(i, 2 * list.get(i));
        };
 
        // Consumer to display a list of numbers
        Consumer<List<Integer> >
            dispList = list -> list.stream().forEach(a -> System.out.print(a + " "));
 
        List<Integer> list = new ArrayList<Integer>();
        list.add(2);
        list.add(1);
        list.add(3);
 
        // Implement modify using accept()
        modify.accept(list);
 
        // Implement dispList using accept()
        dispList.accept(list);
    }
}
Producción: 

10
4 2 6

 

2. y entonces()

Devuelve un Consumer compuesto en el que el Consumer parametrizado se ejecutará después del primero. Si la evaluación de cualquiera de las funciones arroja un error, se transmite al llamador de la operación compuesta.
Nota: La función que se pasa como argumento debe ser del tipo Consumer.
Sintaxis: 
 

default Consumer <T> 
        andThen(Consumer<? super T> after)

Parámetros: Este método acepta un parámetro después del cual se aplica el Consumidor después del actual.
Valor devuelto: este método devuelve un Consumidor compuesto que primero aplica el Consumidor actual primero y luego la operación posterior.
Excepción: este método arroja NullPointerException si la operación posterior es nula.
A continuación se muestra el código para ilustrar el método andThen():
Programa 1:
 

Java

// Java Program to demonstrate
// Consumer's andThen() method
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
 
public class Main {
    public static void main(String args[])
    {
 
        // Consumer to multiply 2 to every integer of a list
        Consumer<List<Integer> > modify = list ->
        {
            for (int i = 0; i < list.size(); i++)
                list.set(i, 2 * list.get(i));
        };
 
        // Consumer to display a list of integers
        Consumer<List<Integer> >
            dispList = list -> list.stream().forEach(a -> System.out.print(a + " "));
 
        List<Integer> list = new ArrayList<Integer>();
        list.add(2);
        list.add(1);
        list.add(3);
 
        // using addThen()
        modify.andThen(dispList).accept(list);
        ;
    }
}
Producción: 

4 2 6

 

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

Java

// Java Program to demonstrate
// Consumer's andThen() method
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
 
public class Main {
    public static void main(String args[])
    {
 
        // Consumer to multiply 2 to every integer of a list
        Consumer<List<Integer> > modify = list ->
        {
            for (int i = 0; i < list.size(); i++)
                list.set(i, 2 * list.get(i));
        };
 
        // Consumer to display a list of integers
        Consumer<List<Integer> >
            dispList = list -> list.stream().forEach(a -> System.out.print(a + " "));
 
        List<Integer> list = new ArrayList<Integer>();
        list.add(2);
        list.add(1);
        list.add(3);
        try {
            // using addThen()
            modify.andThen(null).accept(list);
        }
        catch (Exception e) {
            System.out.println("Exception: " + e);
        }
    }
}
Producción: 

Exception: java.lang.NullPointerException

 

Programa 3: para demostrar cómo se devuelve y se maneja una excepción en la función posterior.
 

Java

// Java Program to demonstrate
// Consumer's andThen() method
 
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Consumer;
 
public class Main {
    public static void main(String args[])
    {
 
        // Consumer to multiply 2 to every integer of a list
        Consumer<List<Integer> > modify = list ->
        {
            for (int i = 0; i <= list.size(); i++)
                list.set(i, 2 * list.get(i));
        };
 
        // Consumer to display a list of integers
        Consumer<List<Integer> >
            dispList = list -> list.stream().forEach(a -> System.out.print(a + " "));
        System.out.println();
 
        List<Integer> list = new ArrayList<Integer>();
        list.add(2);
        list.add(1);
        list.add(3);
 
        // using addThen()
        try {
            dispList.andThen(modify).accept(list);
            ;
        }
        catch (Exception e) {
            System.out.println("Exception: " + e);
        }
    }
}
Producción: 

2 1 3 Exception: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

 

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 *