Jak korzystać z interfejsu konsumenckiego w Javie?

Jak Korzystac Z Interfejsu Konsumenckiego W Javie



W Javie „ Konsument ” reprezentuje operację, która otrzymuje pojedyncze dane wejściowe i wykonuje na nich pewne działania bez zwracania wyniku. Oferuje również elastyczny sposób definiowania niestandardowych operacji, które można wykorzystać w programowaniu funkcjonalnym, takich jak wyrażenia lambda. Ten blog ilustruje implementację interfejsu konsumenta w Javie.

Jak korzystać z interfejsu konsumenckiego w Javie?

Konsument ” oferuje enkapsulację lub zachowanie, które można przekazywać i wykonywać w różnych miejscach programu. Promuje zachowanie wielokrotnego użytku, które można zastosować do różnych danych wejściowych bez powielania kodu. Interfejs konsumenta składa się z dwóch metod, a mianowicie „ i wtedy() ' I ' zaakceptować() ”.







Zapoznaj się z poniższymi przykładami, aby zrozumieć obie funkcje wraz z przykładami kodeków:



Przykład 1: Użycie metody „andThen()”.



Deweloper może połączyć wiele „ Konsument ” całkowicie za pomocą „ i wtedy() ' metoda. Zwraca nowy „ Konsument ”, który wykonuje operację bieżącego „ Konsument ' instancja. Następnie spełnia operacje nadchodzącego/po „ Konsument ' instancja. Jest to domyślna metoda, która jest szeroko stosowana w procesie „ Kompozycja ”.





Składnia dla „ i wtedy() ” dodaje się poniżej:

i wtedy ( Konsument < ? super T > Po )



i wtedy() ”metoda łączy w sobie obecnego konsumenta” Super ” z innym konsumentem ” Po ”. I najpierw wykonuje operację bieżącego konsumenta, a następnie operację dostarczonego konsumenta.

Przejdźmy przez program dla lepszego zrozumienia:

importuj java.util.ArrayList;
importuj java.util.LinkedList;
importuj java.util.List;
import java.util.function.Consumer;

root klasy publicznej {
public static void main ( Argumenty łańcuchowe [ ] )
{
// utworzenie metody main
Konsument < Lista < Liczba całkowita > > pomnóż = daneEle - >
{
Do ( int j = 0 ; J < dataEle.size ( ) ; j++ ) {
dataEle.set ( J, 5 * dataEle.get ( J ) ) ;
}
} ;
// Consumer, aby wyświetlić listę liczb całkowitych
Konsument < Lista < Liczba całkowita > >
prints = dataEle - > dataEle.stream ( ) .dla każdego ( k- > Wydruk.systemowy ( k + ' ' ) ) ;

Lista < Liczba całkowita > dataEle = nowa lista tablic < Liczba całkowita > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
pomnóż. i wtedy ( wydruki ) .zaakceptować ( dataEle ) ;
}
}

Wyjaśnienie powyższego kodu:

  • Po pierwsze ' Konsument ”, „ Połączona lista ” i powiązane narzędzia są importowane do pliku Java. Następnie główna klasa o nazwie „ Źródło ' jest tworzone.
  • Następnie utwórz interfejs „Konsument” typu Lista o nazwie „ zwielokrotniać ” i ustaw go jako równy „ lista tablic ”, który zostanie utworzony poniżej.
  • Wykorzystuje „ Do ” pętla, która iteruje do długości „ lista tablic ' o imieniu ' dataEle ” i mnoży każdy element danych z „ dataEle ' z ' 5 ”.
  • Potem druga „ Konsument ” tworzony jest interfejs, który drukuje każdy element na konsoli, który jest pobierany po procesie mnożenia ze strumienia.
  • Teraz utwórz i dodaj fikcyjne elementy danych w „ dataEle ” Lista tablic.
  • W końcu „ i wtedy() ” jest wywoływana z „ zaakceptować() ”metoda akceptująca” dataEle ” ArrayList i zwraca wynik „ zwielokrotniać ' kolejno.

Po zakończeniu fazy wykonawczej:

Migawka pokazuje, że zadanie mnożenia zostało zakończone przy użyciu „ i wtedy() „metoda” Konsument ' interfejs.

Przykład 2: Użycie metody „accept()”.

zaakceptować() ” jest funkcjonalną metodą „ Konsument ' interfejs. Akceptuje pojedynczy argument typu „ T ” i wykonuje na nim określone/potrzebne operacje. Wartość ' Zero ” nie należy mu podawać, ponieważ nie akceptuje on „ Zero ” i wygeneruj wyjątek.

Jego składnia jest podana poniżej:

nieważne zaakceptować ( < mocny > T mocny > T )

W powyższej składni „ T ” jest jedynym argumentem, na podstawie którego wykonywane są pewne operacje.

Odwiedźmy poniższy blok kodu dla lepszego zrozumienia:

importuj java.util.ArrayList;
importuj java.util.LinkedList;
importuj java.util.List;
import java.util.function.Consumer;

// importowanie narzędzi W Jawa plik
root klasy publicznej {
public static void main ( Argumenty łańcuchowe [ ] ) // utworzenie metody main
{
Konsument < Liczba całkowita > disp = k - > System.out.println ( k ) ;
wyśw.akceptuj ( 255 ) ;
Konsument < Lista < Liczba całkowita > > pomnóż = daneEle - >
{
Do ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Konsument < Lista < Liczba całkowita > >
prints = dataEle - > dataEle.stream ( ) .dla każdego ( J - > Wydruk.systemowy ( j + '
'
) ) ;
Lista < Liczba całkowita > dataEle = nowa lista tablic < Liczba całkowita > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Zaimplementuj modyfikację za pomocą akceptacji ( )
mnożyć. akceptować ( dataEle ) ;
// Zaimplementuj dispList za pomocą accept ( )
wydruki.akceptuj ( dataEle ) ;
}
}

Wyjaśnienie powyższego kodu:

  • Po pierwsze ' Konsument ” interfejs o nazwie „ disp ”, który wyświetla podane parametry na konsoli, bez wykonywania jakiejkolwiek operacji.
  • Teraz ' zaakceptować() ” jest wywoływana przez „ disp „ Konsument, a wartość „ 255 ” jest przekazywany do tej metody.
  • Dalej kolejny „ Konsument ” tworzony jest interfejs, który wykorzystuje Do ”, aby zastosować mnożenie na każdym rezydującym elemencie tablicy ArrayList o nazwie „ dataEle ”.
  • Następnie utwórz jeszcze jeden „ Konsument ”, aby wyświetlić „ dataEle ” elementy powstają po zastosowaniu mnożenia, które pochodzi ze strumienia.
  • Następnie zainicjuj ArrayList „ dataEle ” z fikcyjnymi elementami danych i wykorzystać „ zaakceptować() ” metoda z „ zwielokrotniać ' interfejs.
  • Na koniec zadzwoń do „ zaakceptować() ” metoda wykorzystująca „ wydruki ”, aby wyświetlić wynik po zastosowaniu mnożenia w dzienniku konsoli.

Po zakończeniu egzekucji:

Powyższa migawka pokazuje, że wiele interfejsów konsumenckich zostało wywołanych pojedynczo przy użyciu „ zaakceptować() ' metoda.

Przykład 3: Obsługa wyjątku dla funkcji After

Wyjątek pojawia się, gdy „ Po ” funkcja „ i wtedy() ” zawiera „ zaakceptować() ' metoda. To sprawia, że ​​interfejs, który przechowuje dane do przetwarzania przez interfejsy przy użyciu metod interfejsu konsumenta, jak pokazano poniżej:

importuj java.util.ArrayList;
importuj java.util.LinkedList;
importuj java.util.List;
import java.util.function.Consumer;

root klasy publicznej {
public static void main ( Argumenty łańcuchowe [ ] )
{
Konsument < Lista < Liczba całkowita > > zwielokrotniać = element danych - >
{
Do ( int j = 0 ; J < = dataEle.size ( ) ; j++ )
dataEle.set ( J, 5 * dataEle.get ( J ) ) ;
} ;
// Consumer, aby wyświetlić listę liczb całkowitych
Konsument < Lista < Liczba całkowita > >
wydrukować = element danych - > dataEle.stream ( ) .dla każdego ( I - > Wydruk.systemowy ( ja + ' ' ) ) ;
Lista < Liczba całkowita > dataEle = nowa lista tablic < Liczba całkowita > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
próbować {
print.andThen ( zwielokrotniać ) .zaakceptować ( dataEle ) ;
}
złapać ( wyjątek ) {
System.out.println ( 'Wyjątek: ' + i ) ;
}
}
}

Wyjaśnienie powyższego bloku kodu:

  • Po pierwsze ' Konsument ” tworzony jest interfejs, który po prostu wiele “ 5 ” liczby całkowite z elementami danych rezydującymi w podanej liście ArrayList.
  • Następnie drugi „ Konsument ” jest tworzony do wyświetlania każdego elementu danych ArrayList, który jest odbierany przez strumień.
  • Następnie ArrayList jest tworzony i inicjowany z fikcyjnymi wartościami typu całkowitego.
  • A później ' próbować ” używany jest blok, w którym „ i wtedy() ” jest wywoływana przez „ wydrukować ' interfejs.
  • Powoduje to „ IndexOutOfBoundsException ' ponieważ ' Do ” limit iteracji pętli został przekroczony, co jest rozwiązywane przez „ złapać ' blok.

Po zakończeniu fazy wykonawczej:

Migawka pokazuje, że IndexOutOfBoundsException został wygenerowany przez kompilator.

Wniosek

Konsument ” zapewnia sposób definiowania zachowania wielokrotnego użytku i wykonywania działań na danych wejściowych bez zwracania wyniku. Składa się ona z ' zaakceptować() ' I ' i wtedy() metody. Jest często używany do zadań przetwarzania danych, w których użytkownicy muszą wykonać akcję na każdym elemencie kolekcji lub strumienia. To wszystko o użyciu i implementacji interfejsu Consumer w Javie.