Как использовать потребительский интерфейс в Java?

Kak Ispol Zovat Potrebitel Skij Interfejs V Java



В Java « Потребитель Интерфейс представляет собой операцию, которая получает один вход и выполняет над ним какое-то действие, не возвращая результата. Он также предлагает гибкий способ определения пользовательских операций, которые можно использовать в функциональном программировании, например лямбда-выражения. Этот блог иллюстрирует реализацию потребительского интерфейса в Java.

Как использовать потребительский интерфейс в Java?

Потребитель Интерфейс предлагает инкапсуляцию или поведение, которые можно передавать и выполнять в разных местах программы. Это способствует многократному использованию поведения, которое можно применять к разным входам без дублирования кода. Интерфейс Consumer состоит из двух методов, а именно « а потом() ' и ' принимать() ».







Посетите приведенные ниже примеры, чтобы понять обе функции, а также примеры кодеков:



Пример 1: Использование метода «andThen()»



Разработчик может связать несколько « Потребитель ” операции в целом с помощью “ а потом() метод. Он возвращает новый « Потребитель », который выполняет операцию текущего « Потребитель ' пример. После этого выполняет операции предстоящего/после « Потребитель ' пример. Это метод по умолчанию, который широко используется для процесса « Состав ».





Синтаксис для « а потом() ” метод вставлен ниже:

а потом ( Потребитель < ? супер Т > после )



а потом() ” метод объединяет текущий потребитель “ супер «с другим потребителем» после ». И он сначала выполняет операцию текущего потребителя, а затем операцию предоставленного потребителя.

Давайте пройдемся по программе для лучшего понимания:

импортировать java.util.ArrayList;
импортировать java.util.LinkedList;
импортировать java.util.List;
импортировать java.util.function.Consumer;

публичный класс Root {
публичная статическая пустота главная ( Строковые аргументы [ ] )
{
// создание основного метода
Потребитель < Список < Целое число > > умножить = данныеЭле - >
{
для ( интервал j = 0 ; Дж < dataEle.size ( ) ; j++ ) {
dataEle.set ( дж, 5 * dataEle.get ( Дж ) ) ;
}
} ;
// Потребитель для отображения списка целых чисел
Потребитель < Список < Целое число > >
печатает = данныеЭле - > dataEle.stream ( ) .для каждого ( к - > System.out.print ( к + ' ' ) ) ;

Список < Целое число > dataEle = новый ArrayList < Целое число > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
умножить.иЗатем ( отпечатки ) .принимать ( данныеЭле ) ;
}
}

Объяснение приведенного выше кода:

  • Во-первых, « Потребитель », « Связанный список ” и соответствующие утилиты импортируются в файл Java. После этого основной класс с именем « Корень ' создано.
  • Затем создайте интерфейс «Потребитель» типа «Список» с именем « умножить ” и установите его равным “ ArrayList », который будет создан ниже.
  • Он использует « для », который повторяется до длины « ArrayList 'по имени' данныеЭле ', и умножает каждый элемент данных ' данныеЭле ' с ' 5 ».
  • После этого секунда» Потребитель », который выводит на консоль каждый элемент, полученный после процесса умножения из потока.
  • Теперь создайте и добавьте фиктивные элементы данных в « данныеЭле «Список массивов.
  • В итоге « а потом() », вызывается с помощью « принимать() ” метод, который принимает “ данныеЭле » ArrayList и возвращает результат « умножить ' в последовательности.

После окончания фазы исполнения:

Снимок показывает, что задача умножения была выполнена с использованием « а потом() метод « Потребитель интерфейс.

Пример 2: Использование метода «accept()»

принимать() ” – это функциональный метод “ Потребитель интерфейс. Он принимает один аргумент типа « Т ” и выполняет над ним указанные/необходимые операции. Значение ' Нулевой ” не должны предоставляться ему, так как он не принимает “ Нулевой ” и генерировать исключение.

Его синтаксис приведен ниже:

недействительный принять ( < сильный > Т сильный > т )

В приведенном выше синтаксисе « т ” — это единственный аргумент, над которым выполняются определенные операции.

Давайте посетим следующий блок кода для лучшего понимания:

импортировать java.util.ArrayList;
импортировать java.util.LinkedList;
импортировать java.util.List;
импортировать java.util.function.Consumer;

// импорт утилит в Джава файл
публичный класс Root {
публичная статическая пустота главная ( Строковые аргументы [ ] ) // создание основного метода
{
Потребитель < Целое число > дисп = к - > System.out.println ( к ) ;
disp.accept ( 255 ) ;
Потребитель < Список < Целое число > > умножить = данныеЭле - >
{
для ( инт к = 0 ; к < dataEle.size ( ) ; к++ )
dataEle.set ( к, 5 * dataEle.get ( к ) ) ;
} ;

Потребитель < Список < Целое число > >
печатает = данныеЭле - > dataEle.stream ( ) .для каждого ( дж - > System.out.print ( Дж + '
'
) ) ;
Список < Целое число > dataEle = новый ArrayList < Целое число > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Реализовать изменение, используя accept ( )
умножить.принять ( данныеЭле ) ;
// Реализовать dispList, используя accept ( )
печатает.принять ( данныеЭле ) ;
}
}

Объяснение приведенного выше кода:

  • Во-первых, « Потребитель ” интерфейс с именем “ дисп », который отображает предоставленные параметры на консоли, не выполняя никаких действий.
  • Сейчас ' принимать() », вызывается методом « дисп Потребитель, а значение « 255 ” передается этому методу.
  • Далее еще один ' Потребитель », который использует « для », чтобы применить умножение к каждому постоянному элементу ArrayList с именем « данныеЭле ».
  • После этого создайте еще один « Потребитель ” интерфейс для отображения “ данныеЭле ” элементы получаются после применения умножения, поступающего из потока.
  • Затем инициализируйте ArrayList». данныеЭле » с фиктивными элементами данных и использовать « принимать() ” метод с “ умножить интерфейс.
  • В конце позвоните в « принимать() 'метод с использованием ' отпечатки ” для отображения результата после применения умножения в журнале консоли.

После окончания исполнения:

На приведенном выше снимке показано, что несколько потребительских интерфейсов были вызваны по одному с использованием « принимать() метод.

Пример 3: обработка исключения для функции After

Исключение возникает, когда « после ” функция “ а потом() ” содержит “ принимать() метод. Это создает интерфейс, который содержит данные для обработки интерфейсами с использованием методов интерфейса Consumer, как показано ниже:

импортировать java.util.ArrayList;
импортировать java.util.LinkedList;
импортировать java.util.List;
импортировать java.util.function.Consumer;

публичный класс Root {
публичная статическая пустота главная ( Строковые аргументы [ ] )
{
Потребитель < Список < Целое число > > умножить = данныеЭле - >
{
для ( интервал j = 0 ; Дж < = dataEle.size ( ) ; j++ )
dataEle.set ( дж, 5 * dataEle.get ( Дж ) ) ;
} ;
// Потребитель для отображения списка целых чисел
Потребитель < Список < Целое число > >
Распечатать = данныеЭле - > dataEle.stream ( ) .для каждого ( я - > System.out.print ( я + ' ' ) ) ;
Список < Целое число > dataEle = новый ArrayList < Целое число > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
пытаться {
распечатать.иЗатем ( умножить ) .принимать ( данныеЭле ) ;
}
ловить ( Исключение д ) {
System.out.println ( 'Исключение: ' + и ) ;
}
}
}

Объяснение приведенного выше блока кода:

  • Во-первых, « Потребитель ” создается интерфейс, который просто несколько “ 5 » целые числа с элементами данных, находящимися в предоставленном ArrayList.
  • Далее второй' Потребитель » создается для отображения каждого элемента данных ArrayList, полученного потоком.
  • После этого ArrayList создается и инициализируется фиктивными значениями целочисленного типа.
  • Затем « пытаться », в котором « а потом() », вызывается методом « Распечатать интерфейс.
  • Это вызывает « Индексаутофбаундсексцептион ' поскольку ' для ” предел итерации цикла превышен, что разрешается “ ловить ' блокировать.

После окончания фазы исполнения:

Снимок показывает, что компилятор сгенерировал IndexOutOfBoundsException.

Заключение

Потребитель » предоставляет способ определить многократно используемое поведение и выполнять действия над входными данными без возврата результата. Это состоит из ' принимать() ' и ' а потом() методы. Он часто используется для задач обработки данных, когда пользователям необходимо выполнить действие над каждым элементом коллекции или потока. Это все, что касается использования и реализации интерфейса Consumer в Java.