Hvordan bruger man forbrugergrænseflade i Java?

Hvordan Bruger Man Forbrugergraenseflade I Java



I Java er ' Forbruger ”-grænsefladen repræsenterer en operation, der modtager et enkelt input og udfører en handling på det uden at returnere et resultat. Det tilbyder også en fleksibel måde at definere brugerdefinerede operationer, som kan bruges i funktionel programmering som lambda-udtryk. Denne blog illustrerer implementeringen af ​​en forbrugergrænseflade i Java.

Hvordan bruger man forbrugergrænseflade i Java?

Det ' Forbruger ”-grænsefladen tilbyder indkapsling eller adfærd, der kan sendes rundt og udføres på forskellige steder i programmet. Det fremmer genbrugelig adfærd, som kan anvendes på forskellige input uden at duplikere kode. Forbrugergrænsefladen består af to metoder, nemlig ' og så() ' og ' acceptere() ”.







Besøg nedenstående eksempler for at forstå begge funktioner sammen med codec-eksempler:



Eksempel 1: Brug af metoden 'andThen()'.



Udvikleren kan kæde flere ' Forbruger ' operationer helt ved at bruge ' og så() ” metode. Det returnerer en ny ' Forbruger ', der udfører operationen af ​​den nuværende ' Forbruger ' eksempel. Efter det, opfylder operationerne af den kommende/efter ' Forbruger ' eksempel. Det er standardmetoden, der er meget brugt til processen med ' Sammensætning ”.





Syntaksen for ' og så() ” metode er indsat nedenfor:

og så ( Forbruger < ? super T > efter )



Det ' og så() 'metoden kombinerer den nuværende forbruger' super ' med en anden forbruger ' efter ”. Og det udfører den aktuelle forbrugers handling først, efterfulgt af driften af ​​den leverede forbruger.

Lad os gennemgå et program for en bedre forståelse:

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

offentlig klasse Root {
offentlig statisk tomrum hoved ( Streng args [ ] )
{
// oprettelse af hovedmetode
Forbruger < Liste < Heltal > > multiplicere = dataEle - >
{
til ( int j = 0 ; j < dataEle.size ( ) ; j++ ) {
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
}
} ;
// Forbruger for at vise en liste over heltal
Forbruger < Liste < Heltal > >
prints = dataEle - > dataEle.stream ( ) .for hver ( k - > System.out.print ( k+ ' ' ) ) ;

Liste < Heltal > dataEle = ny ArrayList < Heltal > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
multiplicere.og derefter ( udskrifter ) .acceptere ( dataEle ) ;
}
}

Forklaring af ovenstående kode:

  • For det første ' Forbruger ', ' LinkedList ” og relaterede hjælpeprogrammer importeres til Java-filen. Derefter er hovedklassen med navnet ' Rod ” er oprettet.
  • Opret derefter en 'Forbruger'-grænseflade af typen Liste med navnet ' formere sig ' og sæt den lig med ' ArrayList ”, der vil blive oprettet nedenfor.
  • Den bruger en ' til ' sløjfe, der itererer indtil længden af ​​' ArrayList ' som hedder ' dataEle ', og multiplicerer hvert dataelement i ' dataEle ' med ' 5 ”.
  • Derefter et sekund ' Forbruger ”-grænsefladen oprettes, som udskriver hvert element på konsollen, der hentes efter multiplikationsprocessen fra en strøm.
  • Opret og tilføj nu dummy-dataelementer i ' dataEle ' ArrayList.
  • I sidste ende vil ' og så() ' metode kaldes med ' acceptere() ' metode, der accepterer ' dataEle ' ArrayList og returnerer resultatet af ' formere sig ' i rækkefølge.

Efter afslutningen af ​​udførelsesfasen:

Snapshottet viser, at multiplikationsopgaven er blevet fuldført ved at bruge ' og så() 'metoden af ​​' Forbruger '-grænseflade.

Eksempel 2: Brug af metoden 'accept()'.

Det ' acceptere() ' metode er en funktionel metode til ' Forbruger '-grænseflade. Den accepterer et enkelt argument af typen ' T ” og udfører de specificerede/nødvendige handlinger på den. Værdien af ​​' Nul ' må ikke gives til den, da den ikke accepterer ' Nul ” værdier og generere en undtagelse.

Dens syntaks er angivet nedenfor:

ugyldig acceptere ( < stærk > T stærk > t )

I ovenstående syntaks er ' t ” er det eneste argument, som visse operationer bliver opereret på.

Lad os besøge nedenstående kodeblok for en bedre forståelse:

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

// importere hjælpeprogrammer i Java fil
offentlig klasse Root {
offentlig statisk tomrum hoved ( Streng args [ ] ) // oprettelse af hovedmetode
{
Forbruger < Heltal > disp = k - > System.out.println ( k ) ;
disp.accepter ( 255 ) ;
Forbruger < Liste < Heltal > > multiplicere = dataEle - >
{
til ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Forbruger < Liste < Heltal > >
prints = dataEle - > dataEle.stream ( ) .for hver ( j - > System.out.print ( j+ '
'
) ) ;
Liste < Heltal > dataEle = ny ArrayList < Heltal > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Implementer ændring ved hjælp af accept ( )
multiplicere.accepter ( dataEle ) ;
// Implementer dispList ved hjælp af accept ( )
udskrifter.accepterer ( dataEle ) ;
}
}

Forklaring af ovenstående kode:

  • For det første ' Forbruger ' grænseflade med navnet ' disp ” oprettes, som viser angivne parametre på konsollen uden at udføre nogen handling.
  • Nu, ' acceptere() ' metode kaldes af ' disp ' Forbruger, og værdien af ​​' 255 ” overføres til denne metode.
  • Dernæst en anden ' Forbruger '-grænsefladen oprettes, som bruger ' til '-løkke for at anvende multiplikation på hvert enkelt element i ArrayList med navnet ' dataEle ”.
  • Derefter skal du oprette en mere ' Forbruger '-grænseflade for at vise ' dataEle ” elementer resulterer efter anvendelse af den multiplikation, der kommer fra strømmen.
  • Dernæst initialiser ArrayList ' dataEle ' med dummy-dataelementer og brug ' acceptere() ' metode med ' formere sig '-grænseflade.
  • Til sidst skal du ringe til ' acceptere() ' metode ved hjælp af ' udskrifter ”-grænseflade for at vise resultatet efter anvendelse af multiplikation på konsolloggen.

Efter afslutningen af ​​udførelsen:

Ovenstående snapshot viser, at flere forbrugergrænseflader er blevet kaldt én ad gangen ved at bruge ' acceptere() ” metode.

Eksempel 3: Håndtering af undtagelse for efterfunktion

Undtagelsen opstår, når ' efter ' funktion af ' og så() '-metoden indeholder en ' acceptere() ” metode. Dette gør en grænseflade, der indeholder data, der skal behandles af grænseflader, der bruger forbrugergrænseflademetoder som vist nedenfor:

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

offentlig klasse Root {
offentlig statisk tomrum hoved ( Streng args [ ] )
{
Forbruger < Liste < Heltal > > formere sig = dataEle - >
{
til ( int j = 0 ; j < = dataEle.størrelse ( ) ; j++ )
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
} ;
// Forbruger for at vise en liste over heltal
Forbruger < Liste < Heltal > >
Print = dataEle - > dataEle.stream ( ) .for hver ( jeg - > System.out.print ( i + ' ' ) ) ;
Liste < Heltal > dataEle = ny ArrayList < Heltal > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
prøve {
print.og derefter ( formere sig ) .acceptere ( dataEle ) ;
}
fangst ( Undtagelse e ) {
System.out.println ( 'Undtagelse:' + og ) ;
}
}
}

Forklaring af ovenstående kodeblok:

  • For det første ' Forbruger ' grænseflade er oprettet som blot flere ' 5 ” heltal med dataelementerne i den leverede ArrayList.
  • Dernæst den anden ' Forbruger ”-grænsefladen oprettes for at vise hvert dataelement i ArrayList, der modtages af strømmen.
  • Derefter oprettes ArrayList og initialiseres med dummy-heltalstypeværdier.
  • Derefter ' prøve '-blok bruges, hvor ' og så() ' metode kaldes af ' Print '-grænseflade.
  • Det forårsager ' IndexOutOfBoundsException ' fordi ' til ' loop iteration grænse er overskredet, hvilket løses af ' fangst ” blok.

Efter afslutningen af ​​udførelsesfasen:

Snapshottet viser, at IndexOutOfBoundsException er blevet genereret af compileren.

Konklusion

Det ' Forbruger ”-grænseflade giver en måde at definere genanvendelig adfærd og udføre handlinger på inputdata uden at returnere et resultat. Den består af ' acceptere() ' og ' og så() ' metoder. Det bruges ofte til databehandlingsopgaver, hvor brugerne skal udføre en handling på hvert element i en samling eller strøm. Det handler alt sammen om brugen og implementeringen af ​​forbrugergrænsefladen i Java.