Paano Gamitin ang Consumer Interface sa Java?

Paano Gamitin Ang Consumer Interface Sa Java



Sa Java, ang ' Konsyumer ” Ang interface ay kumakatawan sa isang operasyon na tumatanggap ng isang input at nagsasagawa ng ilang aksyon dito nang hindi nagbabalik ng resulta. Nag-aalok din ito ng isang flexible na paraan upang tukuyin ang mga custom na operasyon na maaaring magamit sa functional programming tulad ng mga expression ng lambda. Inilalarawan ng blog na ito ang pagpapatupad ng interface ng Consumer sa Java.

Paano Gamitin ang Consumer Interface sa Java?

Ang ' Konsyumer ” interface ay nag-aalok ng encapsulation o pag-uugali na maaaring ipasa sa paligid at isagawa sa iba't ibang mga lokasyon sa programa. Itinataguyod nito ang reusable na gawi na maaaring ilapat sa iba't ibang input nang walang duplicate na code. Ang interface ng Consumer ay binubuo ng dalawang pamamaraan na ' andThen() 'at' tanggapin() ”.







Bisitahin ang mga halimbawa sa ibaba para sa pag-unawa sa parehong mga function kasama ng mga halimbawa ng codec:



Halimbawa 1: Paggamit ng “andThen()” Method



Maaaring i-chain ng developer ang maramihang ' Konsyumer 'mga operasyon nang buo sa pamamagitan ng paggamit ng ' andThen() ” paraan. Nagbabalik ito ng bago' Konsyumer 'na nagsasagawa ng pagpapatakbo ng kasalukuyang' Konsyumer ” halimbawa. Pagkatapos nito, tinutupad ang mga operasyon ng paparating/pagkatapos ng ' Konsyumer ” halimbawa. Ito ang default na paraan na malawakang ginagamit para sa proseso ng ' Komposisyon ”.





Ang syntax para sa ' andThen() ” paraan ay ipinasok sa ibaba:

at pagkatapos ( Konsyumer < ? sobrang T > pagkatapos )



Ang ' andThen() 'pinagsasama ng pamamaraan ang kasalukuyang mamimili ' sobrang 'sa ibang mamimili' pagkatapos ”. At ito ay nagsasagawa muna ng operasyon ng kasalukuyang mamimili, na sinusundan ng operasyon ng ibinigay na mamimili.

Maglakad tayo sa isang programa para sa isang mas mahusay na pag-unawa:

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

pampublikong klase Root {
pampublikong static void main ( String args [ ] )
{
// paglikha ng pangunahing pamamaraan
Konsyumer < Listahan < Integer > > multiply = dataEle - >
{
para sa ( int j = 0 ; j < dataEle.size ( ) ; j++ ) {
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
}
} ;
// Consumer na magpakita ng listahan ng mga integer
Konsyumer < Listahan < Integer > >
prints = dataEle - > dataEle.stream ( ) .forEach ( k - > System.out.print ( k + ' ' ) ) ;

Listahan < Integer > dataEle = bagong ArrayList < Integer > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
multiply.andThen ( mga kopya ) .tanggapin ( dataEle ) ;
}
}

Paliwanag ng code sa itaas:

  • Una, ang ' Konsyumer ”, “ LinkedList ” at ang mga kaugnay na kagamitan ay ini-import sa Java file. Pagkatapos nito, ang pangunahing klase na may pangalan na ' ugat ” ay nilikha.
  • Susunod, lumikha ng interface ng 'Consumer' ng uri ng Listahan na pinangalanang ' magparami ” at itakda itong katumbas ng “ ArrayList ” na gagawin sa ibaba.
  • Ito ay gumagamit ng ' para sa ' loop na umuulit hanggang sa haba ng ' ArrayList ' pinangalanan ' dataEle ”, at pinaparami ang bawat elemento ng data ng “ dataEle 'may' 5 ”.
  • Pagkatapos nito, isang segundo' Konsyumer ” interface ay nilikha na nagpi-print ng bawat elemento sa console na kinukuha pagkatapos ng proseso ng multiplikasyon mula sa isang stream.
  • Ngayon, lumikha at magdagdag ng mga dummy na elemento ng data sa “ dataEle ” ArrayList.
  • Sa huli, ang ' andThen() Ang pamamaraan ay tinatawag na may ' tanggapin() 'paraan na tumatanggap ng' dataEle ” ArrayList at ibinabalik ang resulta ng “ magparami ” sunod sunod.

Pagkatapos ng pagtatapos ng yugto ng pagpapatupad:

Ang snapshot ay nagpapakita na ang multiplikasyon na gawain ay nakumpleto sa pamamagitan ng paggamit ng ' andThen() 'paraan ng' Konsyumer ” interface.

Halimbawa 2: Paggamit ng “accept()” Method

Ang ' tanggapin() Ang pamamaraan ay isang functional na pamamaraan ng ' Konsyumer ” interface. Tumatanggap ito ng isang argumento ng uri ' T ” at ginagawa ang tinukoy/kinakailangang mga operasyon dito. Ang halaga ng ' Wala 'Hindi dapat ibigay dito dahil hindi ito tumatanggap' Wala ” value at bumuo ng exception.

Ang syntax nito ay ibinigay sa ibaba:

walang bisa tanggapin ( < malakas > T malakas > t )

Sa syntax sa itaas, ang ' t ” ay ang nag-iisang argumento kung saan pinapatakbo ang ilang partikular na operasyon.

Bumisita tayo sa ibaba ng block ng code para sa isang mas mahusay na pag-unawa:

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

// pag-import ng mga kagamitan sa Java file
pampublikong klase Root {
pampublikong static void main ( String args [ ] ) // paglikha ng pangunahing pamamaraan
{
Konsyumer < Integer > disp = k - > System.out.println ( k ) ;
disp.tanggap ( 255 ) ;
Konsyumer < Listahan < Integer > > multiply = dataEle - >
{
para sa ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Konsyumer < Listahan < Integer > >
prints = dataEle - > dataEle.stream ( ) .forEach ( j - > System.out.print ( j + '
'
) ) ;
Listahan < Integer > dataEle = bagong ArrayList < Integer > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Ipatupad ang pagbabago gamit ang accept ( )
magparami.tanggap ( dataEle ) ;
// Ipatupad ang dispList gamit ang accept ( )
prints.accept ( dataEle ) ;
}
}

Paliwanag ng code sa itaas:

  • Una, ang ' Konsyumer 'interface na pinangalanang' disp ” ay nilikha na nagpapakita ng mga ibinigay na parameter sa console, nang hindi nagsasagawa ng anumang operasyon.
  • Ngayon ang ' tanggapin() 'paraan ay tinatawag ng ' disp 'Consumer, at ang halaga ng ' 255 ” ay ipinasa sa paraang ito.
  • Susunod, isa pa' Konsyumer Ang interface ay nilikha na gumagamit ng ' para sa ' loop upang ilapat ang multiplikasyon sa bawat naninirahan na elemento ng ArrayList na pinangalanang ' dataEle ”.
  • Pagkatapos nito, lumikha ng isa pang ' Konsyumer ' interface upang ipakita ang ' dataEle ” resulta ng mga elemento pagkatapos ilapat ang multiplikasyon na nagmumula sa stream.
  • Susunod, simulan ang ArrayList ' dataEle ” na may dummy data elements at gamitin ang “ tanggapin() 'paraan na may ' magparami ” interface.
  • Sa huli, tawagan ang ' tanggapin() 'paraan gamit ang ' mga kopya ” interface upang ipakita ang resulta pagkatapos ilapat ang multiplikasyon sa console log.

Pagkatapos ng pagtatapos ng pagpapatupad:

Ang snapshot sa itaas ay nagpapakita na maraming mga consumer interface ang tinawag nang paisa-isa gamit ang ' tanggapin() ” paraan.

Halimbawa 3: Paghawak ng Exception para sa After Function

Ang pagbubukod ay lumitaw kapag ang ' pagkatapos 'function ng' andThen() 'paraan ay naglalaman ng isang' tanggapin() ” paraan. Gumagawa ito ng interface na nagtataglay ng data na ipoproseso ng mga interface gamit ang mga paraan ng interface ng Consumer tulad ng ipinapakita sa ibaba:

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

pampublikong klase Root {
pampublikong static void main ( String args [ ] )
{
Konsyumer < Listahan < Integer > > magparami = dataEle - >
{
para sa ( int j = 0 ; j < = dataEle.size ( ) ; j++ )
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
} ;
// Consumer na magpakita ng listahan ng mga integer
Konsyumer < Listahan < Integer > >
print = dataEle - > dataEle.stream ( ) .forEach ( ako - > System.out.print ( ako + '' ) ) ;
Listahan < Integer > dataEle = bagong ArrayList < Integer > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
subukan {
print.andThen ( magparami ) .tanggapin ( dataEle ) ;
}
mahuli ( Exception e ) {
System.out.println ( 'Exception:' + at ) ;
}
}
}

Paliwanag ng block ng code sa itaas:

  • Una, ang ' Konsyumer 'Ang interface ay nilikha na maramihang' 5 ” integer na may mga elemento ng data na naninirahan sa ibinigay na ArrayList.
  • Susunod, ang pangalawa ' Konsyumer ” interface ay nilikha upang ipakita ang bawat elemento ng data ng ArrayList na natanggap ng stream.
  • Pagkatapos nito, ang ArrayList ay nilikha at pinasimulan gamit ang mga dummy integer type na halaga.
  • Pagkatapos, ang ' subukan 'Ang bloke ay ginagamit kung saan ang ' andThen() 'paraan ay tinatawag ng ' print ” interface.
  • Nagdudulot ito ng ' IndexOutOfBoundsException 'dahil ang' para sa ” Ang limitasyon ng pag-ulit ng loop ay lumampas, na nalutas ng “ mahuli ” block.

Pagkatapos ng pagtatapos ng yugto ng pagpapatupad:

Ipinapakita ng snapshot na ang IndexOutOfBoundsException ay nabuo ng compiler.

Konklusyon

Ang ' Konsyumer ” interface ay nagbibigay ng paraan upang tukuyin ang magagamit muli na gawi at magsagawa ng mga pagkilos sa input data nang hindi nagbabalik ng resulta. Binubuo ito ng ' tanggapin() 'at' andThen() ' paraan. Madalas itong ginagamit para sa mga gawain sa pagproseso ng data, kung saan kailangang magsagawa ng pagkilos ang mga user sa bawat elemento ng isang koleksyon o stream. Iyon ay tungkol sa paggamit at pagpapatupad ng interface ng Consumer sa Java.