Wie verwende ich die Verbraucherschnittstelle in Java?

Wie Verwende Ich Die Verbraucherschnittstelle In Java



In Java ist das „ Verbraucher „Schnittstelle stellt eine Operation dar, die eine einzelne Eingabe empfängt und eine Aktion darauf ausführt, ohne ein Ergebnis zurückzugeben. Es bietet außerdem eine flexible Möglichkeit, benutzerdefinierte Operationen zu definieren, die in der funktionalen Programmierung wie Lambda-Ausdrücken verwendet werden können. Dieser Blog veranschaulicht die Implementierung einer Consumer-Schnittstelle in Java.

Wie verwende ich die Verbraucherschnittstelle in Java?

Der ' Verbraucher Die Schnittstelle „bietet die Kapselung oder das Verhalten, das an verschiedenen Stellen im Programm weitergegeben und ausgeführt werden kann. Es fördert wiederverwendbares Verhalten, das auf verschiedene Eingaben angewendet werden kann, ohne dass Code dupliziert werden muss. Die Consumer-Schnittstelle besteht aus zwei Methoden, nämlich „ und dann() ' Und ' akzeptieren() “.







Sehen Sie sich die folgenden Beispiele an, um beide Funktionen zusammen mit Codec-Beispielen zu verstehen:



Beispiel 1: Verwendung der Methode „andThen()“.



Der Entwickler kann mehrere „verketten“ Verbraucher ” Operationen insgesamt durch die Verwendung der „ und dann() ' Methode. Es gibt ein neues „ Verbraucher ” das die Operation des aktuellen „ ausführt Verbraucher ” Instanz. Danach werden die Vorgänge des kommenden/nachfolgenden „“ ausgeführt. Verbraucher ” Instanz. Es ist die Standardmethode, die häufig für den Prozess „“ verwendet wird. Komposition “.





Die Syntax für „ und dann() Die Methode wird unten eingefügt:

und dann ( Verbraucher < ? super T > nach )



Der ' und dann() „Methode kombiniert den aktuellen Verbraucher“ super „mit einem anderen Verbraucher“ nach “. Und es führt zuerst die Operation des aktuellen Verbrauchers aus, gefolgt von der Operation des bereitgestellten Verbrauchers.

Lassen Sie uns zum besseren Verständnis ein Programm durchgehen:

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

öffentliche Klasse Root {
Public static void Main ( String-Argumente [ ] )
{
// Erstellung der Hauptmethode
Verbraucher < Aufführen < Ganze Zahl > > multiplizieren = dataEle - >
{
für ( int j = 0 ; J < dataEle.size ( ) ; j++ ) {
dataEle.set ( J, 5 * dataEle.get ( J ) ) ;
}
} ;
// Consumer, um eine Liste von Ganzzahlen anzuzeigen
Verbraucher < Aufführen < Ganze Zahl > >
prints = dataEle - > dataEle.stream ( ) .für jede ( k - > Systemausdruck ( k + ' ' ) ) ;

Aufführen < Ganze Zahl > dataEle = neue ArrayList < Ganze Zahl > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
multiplizieren.unddann ( druckt ) .akzeptieren ( dataEle ) ;
}
}

Erklärung des obigen Codes:

  • Zuerst die ' Verbraucher “, „ LinkedList ” und zugehörige Dienstprogramme werden in die Java-Datei importiert. Danach wird die Hauptklasse mit dem Namen „ Wurzel ' geschaffen.
  • Als nächstes erstellen Sie eine „Consumer“-Schnittstelle vom Typ Liste mit dem Namen „ multiplizieren ” und setzen Sie es gleich dem „ Anordnungsliste “, das unten erstellt wird.
  • Es verwendet ein „ für ”-Schleife, die bis zur Länge von „ iteriert Anordnungsliste ' genannt ' dataEle “ und multipliziert jedes Datenelement von „ dataEle ' mit ' 5 “.
  • Danach ein zweites „ Verbraucher Es wird eine Schnittstelle erstellt, die jedes Element auf der Konsole ausgibt, das nach dem Multiplikationsprozess aus einem Stream abgerufen wird.
  • Erstellen und fügen Sie nun Dummy-Datenelemente im „ dataEle ' Anordnungsliste.
  • Am Ende ist das „ und dann() Die Methode wird mit dem Aufruf „ akzeptieren() „Methode, die akzeptiert“ dataEle ” ArrayList und gibt das Ergebnis von „ zurück multiplizieren ' der Reihe nach.

Nach Ende der Ausführungsphase:

Der Schnappschuss zeigt, dass die Multiplikationsaufgabe mithilfe der „ und dann() „Methode der“ Verbraucher ” Schnittstelle.

Beispiel 2: Verwendung der Methode „accept()“.

Der ' akzeptieren() „Methode ist eine funktionale Methode der „ Verbraucher ” Schnittstelle. Es akzeptiert ein einzelnes Argument vom Typ „ T ” und führt die angegebenen/erforderlichen Operationen darauf aus. Der Wert von ' Null ” darf ihm nicht zur Verfügung gestellt werden, da es nicht akzeptiert wird „ Null ”-Werte und generieren eine Ausnahme.

Die Syntax ist unten angegeben:

nichtig akzeptieren ( < stark > T stark > T )

In der obigen Syntax ist das „ T „ ist das einzige Argument, mit dem bestimmte Operationen ausgeführt werden.

Schauen wir uns zum besseren Verständnis den folgenden Codeblock an:

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

// Importieren von Dienstprogrammen In Java Datei
öffentliche Klasse Root {
Public static void Main ( String-Argumente [ ] ) // Erstellung der Hauptmethode
{
Verbraucher < Ganze Zahl > disp = k - > System.out.println ( k ) ;
disp.akzept ( 255 ) ;
Verbraucher < Aufführen < Ganze Zahl > > multiplizieren = dataEle - >
{
für ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Verbraucher < Aufführen < Ganze Zahl > >
prints = dataEle - > dataEle.stream ( ) .für jede ( J - > Systemausdruck ( j + '
'
) ) ;
Aufführen < Ganze Zahl > dataEle = neue ArrayList < Ganze Zahl > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Implementieren Sie die Änderung mithilfe von Accept ( )
multiplizieren.akzeptieren ( dataEle ) ;
// Implementieren Sie dispList mit Accept ( )
druckt.akzeptieren ( dataEle ) ;
}
}

Erklärung des obigen Codes:

  • Zuerst die ' Verbraucher „Schnittstelle mit dem Namen“ disp ” wird erstellt, das die bereitgestellten Parameter auf der Konsole anzeigt, ohne dass eine Operation ausgeführt wird.
  • Jetzt die ' akzeptieren() Die Methode wird aufgerufen durch „ disp „ Verbraucher und der Wert von „ 255 ” wird an diese Methode übergeben.
  • Als nächstes noch ein „ Verbraucher Es wird eine Schnittstelle erstellt, die die „ für ”-Schleife, um die Multiplikation auf jedes vorhandene Element der ArrayList mit dem Namen „ anzuwenden dataEle “.
  • Erstellen Sie danach ein weiteres „ Verbraucher ”-Schnittstelle zur Anzeige der „ dataEle ”-Elemente ergeben sich nach Anwendung der Multiplikation, die aus dem Stream kommt.
  • Als nächstes initialisieren Sie ArrayList „ dataEle ” mit Dummy-Datenelementen und nutzen Sie das „ akzeptieren() ”-Methode mit dem „ multiplizieren ” Schnittstelle.
  • Nennen Sie am Ende „ akzeptieren() ”-Methode unter Verwendung der „ druckt ”-Schnittstelle, um das Ergebnis nach Anwendung der Multiplikation im Konsolenprotokoll anzuzeigen.

Nach Ende der Ausführung:

Der obige Schnappschuss zeigt, dass mehrere Verbraucherschnittstellen nacheinander mit dem Befehl „ aufgerufen wurden. akzeptieren() ' Methode.

Beispiel 3: Ausnahmebehandlung für After-Funktion

Die Ausnahme entsteht, wenn „ nach ” Funktion des „ und dann() Die Methode enthält ein „ akzeptieren() ' Methode. Dadurch entsteht eine Schnittstelle, die Daten enthält, die von Schnittstellen mithilfe von Consumer-Schnittstellenmethoden verarbeitet werden sollen, wie unten gezeigt:

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

öffentliche Klasse Root {
Public static void Main ( String-Argumente [ ] )
{
Verbraucher < Aufführen < Ganze Zahl > > multiplizieren = dataEle - >
{
für ( int j = 0 ; J < = dataEle.size ( ) ; j++ )
dataEle.set ( J, 5 * dataEle.get ( J ) ) ;
} ;
// Consumer, um eine Liste von Ganzzahlen anzuzeigen
Verbraucher < Aufführen < Ganze Zahl > >
drucken = dataEle - > dataEle.stream ( ) .für jede ( ich - > Systemausdruck ( ich + ' ' ) ) ;
Aufführen < Ganze Zahl > dataEle = neue ArrayList < Ganze Zahl > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
versuchen {
print.andThen ( multiplizieren ) .akzeptieren ( dataEle ) ;
}
fangen ( Ausnahme e ) {
System.out.println ( 'Ausnahme: ' + und ) ;
}
}
}

Erläuterung des obigen Codeblocks:

  • Zuerst die ' Verbraucher „Es wird eine Schnittstelle geschaffen, die einfach mehrere“ 5 ”Ganzzahlen mit den Datenelementen, die sich in der bereitgestellten ArrayList befinden.
  • Als nächstes das zweite „ Verbraucher Es wird eine Schnittstelle erstellt, um jedes Datenelement der ArrayList anzuzeigen, das vom Stream empfangen wird.
  • Danach wird die ArrayList erstellt und mit Dummy-Integer-Typwerten initialisiert.
  • Dann ist die ' versuchen ”-Block wird verwendet, in dem das „ und dann() Die Methode wird aufgerufen durch „ drucken ” Schnittstelle.
  • Es verursacht die „ IndexOutOfBoundsException ' weil das ' für Das Limit der Schleifeniteration wurde überschritten, was durch „behoben“ wird. fangen ' Block.

Nach Ende der Ausführungsphase:

Der Schnappschuss zeigt, dass IndexOutOfBoundsException vom Compiler generiert wurde.

Abschluss

Der ' Verbraucher Die Schnittstelle bietet eine Möglichkeit, wiederverwendbares Verhalten zu definieren und Aktionen für Eingabedaten auszuführen, ohne ein Ergebnis zurückzugeben. Es besteht aus ' akzeptieren() ' Und ' und dann() ” Methoden. Es wird häufig für Datenverarbeitungsaufgaben verwendet, bei denen Benutzer eine Aktion für jedes Element einer Sammlung oder eines Streams ausführen müssen. Hier dreht sich alles um die Verwendung und Implementierung der Consumer-Schnittstelle in Java.