Cum să utilizați interfața de consum în Java?

Cum Sa Utilizati Interfata De Consum In Java



În Java, „ Consumator ” interfața reprezintă o operație care primește o singură intrare și efectuează o acțiune asupra acesteia fără a returna un rezultat. De asemenea, oferă o modalitate flexibilă de definire a operațiunilor personalizate care pot fi utilizate în programarea funcțională, cum ar fi expresiile lambda. Acest blog ilustrează implementarea unei interfețe Consumer în Java.

Cum să utilizați interfața pentru consumator în Java?

Consumator ” interfața oferă încapsularea sau comportamentul care poate fi transmis și executat în diferite locații din program. Promovează un comportament reutilizabil care poate fi aplicat la diferite intrări fără a duplica codul. Interfața Consumer constă din două metode și anume „ și apoi() ' și ' Accept() ”.







Vizitați exemplele de mai jos pentru a înțelege ambele funcții împreună cu exemple de codec:



Exemplul 1: Utilizarea metodei „andThen()”.



Dezvoltatorul poate înlănțui mai multe „ Consumator ” operațiuni în totalitate utilizând „ și apoi() ” metoda. Returnează un nou „ Consumator ” care efectuează operarea curentului ” Consumator ' instanță. După aceea, îndeplinește operațiunile viitoare/după „ Consumator ' instanță. Este metoda implicită care este utilizată pe scară largă pentru procesul de „ Compoziţie ”.





Sintaxa pentru „ și apoi() ” metoda se inserează mai jos:

și apoi ( Consumator < ? super T > după )



și apoi() „metoda combină consumatorul actual” super „cu un alt consumator” după ”. Și execută mai întâi operațiunea consumatorului curent, urmată de operațiunea consumatorului furnizat.

Să parcurgem un program pentru o mai bună înțelegere:

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

public class Root {
public static void main ( Argumente șir [ ] )
{
// crearea metodei principale
Consumator < Listă < Întreg > > multiplicare = dataEle - >
{
pentru ( int j = 0 ; j < dataEle.size ( ) ; j++ ) {
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
}
} ;
// Consumatorul pentru a afișa o listă de numere întregi
Consumator < Listă < Întreg > >
prints = dataEle - > dataEle.stream ( ) .pentru fiecare ( k - > Sistem.out.print ( k + ' ' ) ) ;

Listă < Întreg > dataEle = noua ArrayList < Întreg > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
înmulţiţi.şi Apoi ( imprimeuri ) .Accept ( dataEle ) ;
}
}

Explicația codului de mai sus:

  • În primul rând, „ Consumator ”, “ LinkedList ” și utilitățile aferente sunt importate în fișierul Java. După aceea, clasa principală cu numele „ Rădăcină ' este creat.
  • Apoi, creați o interfață „Consumator” de tip Listă numită „ multiplica ” și setați-l egal cu „ ArrayList ” care va fi creat mai jos.
  • Utilizează un „ pentru ” buclă care iterează până la lungimea de ” ArrayList ' numit ' dataEle ”, și înmulțește fiecare element de date din „ dataEle ' cu ' 5 ”.
  • După aceea, o secundă” Consumator ” este creată interfața care imprimă fiecare element pe consolă care este preluat după procesul de multiplicare dintr-un flux.
  • Acum, creați și adăugați elemente de date simulate în „ dataEle ” ArrayList.
  • În cele din urmă, „ și apoi() ” metoda este numită cu “ Accept() ” metoda care acceptă ” dataEle ” ArrayList și returnează rezultatul „ multiplica ' in secvență.

După încheierea fazei de execuție:

Instantaneul arată că sarcina de multiplicare a fost finalizată prin utilizarea „ și apoi() ” metoda “ Consumator ” interfață.

Exemplul 2: Utilizarea metodei „accept()”.

Accept() Metoda ” este o metodă funcțională a ” Consumator ” interfață. Acceptă un singur argument de tipul „ T ” și efectuează asupra acestuia operațiunile specificate/necesare. Valoarea a ' Nul ” nu trebuie să îi fie furnizat deoarece nu acceptă ” Nul ” și generează o excepție.

Sintaxa sa este prezentată mai jos:

nu accepta ( < puternic > T puternic > t )

În sintaxa de mai sus, „ t ” este singurul argument pe care se operează anumite operațiuni.

Să vizităm blocul de cod de mai jos pentru o mai bună înțelegere:

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

// importul de utilități în Java fişier
public class Root {
public static void main ( Argumente șir [ ] ) // crearea metodei principale
{
Consumator < Întreg > disp = k - > System.out.println ( k ) ;
disp.accept ( 255 ) ;
Consumator < Listă < Întreg > > multiplicare = dataEle - >
{
pentru ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Consumator < Listă < Întreg > >
prints = dataEle - > dataEle.stream ( ) .pentru fiecare ( j - > Sistem.out.print ( j + '
'
) ) ;
Listă < Întreg > dataEle = noua ArrayList < Întreg > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Implementați modificarea folosind accept ( )
înmulţire.acceptare ( dataEle ) ;
// Implementați dispList folosind accept ( )
printuri.accept ( dataEle ) ;
}
}

Explicația codului de mai sus:

  • În primul rând, „ Consumator ' interfață numită ' disp ” este creat care afișează parametrii furnizați pe consolă, fără a efectua nicio operațiune.
  • Acum ' Accept() ” metoda este numită de “ disp „Consumator și valoarea „ 255 ” se trece la această metodă.
  • În continuare, un alt „ Consumator ” este creată interfața care utilizează „ pentru ” buclă pentru a aplica multiplicarea pe fiecare element rezident al ArrayList numit ” dataEle ”.
  • După aceea, mai creați unul „ Consumator ” pentru a afișa „ dataEle ” elemente rezultă după aplicarea înmulțirii care vine din flux.
  • Apoi, inițializați ArrayList „ dataEle ” cu elemente de date simulate și utilizați „ Accept() ” metoda cu “ multiplica ” interfață.
  • În cele din urmă, sunați „ Accept() ” folosind metoda “ printuri ” pentru a afișa rezultatul după aplicarea înmulțirii pe jurnalul consolei.

După încheierea execuției:

Instantaneul de mai sus afișează că mai multe interfețe de consum au fost apelate una câte una folosind butonul „ Accept() ” metoda.

Exemplul 3: Gestionarea excepției pentru funcția After

Excepția apare atunci când „ după „funcția „ și apoi() „Metoda” conține un „ Accept() ” metoda. Aceasta face o interfață care deține date pentru a fi procesate de interfețe folosind metode de interfață Consumer, așa cum se arată mai jos:

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

public class Root {
public static void main ( Argumente șir [ ] )
{
Consumator < Listă < Întreg > > multiplica = dataEle - >
{
pentru ( int j = 0 ; j < = dataEle.size ( ) ; j++ )
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
} ;
// Consumatorul pentru a afișa o listă de numere întregi
Consumator < Listă < Întreg > >
imprimare = dataEle - > dataEle.stream ( ) .pentru fiecare ( eu - > Sistem.out.print ( eu + ' ' ) ) ;
Listă < Întreg > dataEle = noua ArrayList < Întreg > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
încerca {
tipăriți.și Apoi ( multiplica ) .Accept ( dataEle ) ;
}
captură ( Excepție e ) {
System.out.println ( 'Excepție: ' + și ) ;
}
}
}

Explicația blocului de cod de mai sus:

  • În primul rând, „ Consumator ” este creată interfața care pur și simplu multiple ” 5 ” numere întregi cu elementele de date care se află în ArrayList furnizat.
  • În continuare, al doilea „ Consumator ” este creată pentru a afișa fiecare element de date din ArrayList care este primit de flux.
  • După aceea, ArrayList este creată și inițializată cu valori de tip întreg inactiv.
  • Apoi, „ încerca este utilizat blocul în care „ și apoi() ” metoda este numită de “ imprimare ” interfață.
  • Aceasta provoacă „ IndexOutOfBoundsException ' deoarece ' pentru „ este depășită limita de iterație a buclei, care este rezolvată prin „ captură ' bloc.

După încheierea fazei de execuție:

Instantaneul arată că IndexOutOfBoundsException a fost generat de compilator.

Concluzie

Consumator ” interfața oferă o modalitate de a defini comportamentul reutilizabil și de a efectua acțiuni asupra datelor de intrare fără a returna un rezultat. Este format din „ Accept() ' și ' și apoi() ” metode. Este adesea folosit pentru sarcini de procesare a datelor, în care utilizatorii trebuie să efectueze o acțiune asupra fiecărui element al unei colecții sau flux. Acesta este totul despre utilizarea și implementarea interfeței Consumer în Java.