Jak používat spotřebitelské rozhraní v Javě?

Jak Pouzivat Spotrebitelske Rozhrani V Jave



V Javě je „ Spotřebitel ” rozhraní představuje operaci, která přijímá jediný vstup a provádí na něm nějakou akci, aniž by vrátila výsledek. Nabízí také flexibilní způsob, jak definovat vlastní operace, které lze využít ve funkčním programování, jako jsou výrazy lambda. Tento blog ilustruje implementaci spotřebitelského rozhraní v Javě.

Jak používat spotřebitelské rozhraní v Javě?

' Spotřebitel ” rozhraní nabízí zapouzdření nebo chování, které lze předat a spustit na různých místech v programu. Podporuje opakovaně použitelné chování, které lze použít na různé vstupy bez duplikace kódu. Spotřebitelské rozhraní se skládá ze dvou metod, a to „ a pak() ' a ' akceptovat() “.







Navštivte níže uvedené příklady pro pochopení obou funkcí spolu s příklady kodeků:



Příklad 1: Použití metody „andThen()“.



Vývojář může řetězit více „ Spotřebitel ” operace zcela pomocí “ a pak() “ metoda. Vrací nový „ Spotřebitel “, který provádí operaci aktuálního “ Spotřebitel “ instance. Poté splní operace nadcházejícího/po „ Spotřebitel “ instance. Je to výchozí metoda, která je široce používána pro proces „ Složení “.





Syntaxe pro „ a pak() “ metoda je vložena níže:

a pak ( Spotřebitel < ? super T > po )



' a pak() “ metoda kombinuje aktuálního spotřebitele “ super 's jiným spotřebitelem' po “. A nejprve provede operaci aktuálního spotřebitele a poté operaci poskytnutého spotřebitele.

Pojďme si projít program pro lepší pochopení:

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

kořen veřejné třídy {
public static void main ( String args [ ] )
{
// vytvoření hlavní metody
Spotřebitel < Seznam < Celé číslo > > násobit = dataEle - >
{
pro ( int j = 0 ; j < dataEle.size ( ) ; j++ ) {
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
}
} ;
// Consumer pro zobrazení seznamu celých čísel
Spotřebitel < Seznam < Celé číslo > >
tisky = dataEle - > dataEle.stream ( ) .pro každého ( k - > System.out.print ( k + '' ) ) ;

Seznam < Celé číslo > dataEle = nový ArrayList < Celé číslo > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
množit.a Pak ( tiskne ) .akceptovat ( dataEle ) ;
}
}

Vysvětlení výše uvedeného kódu:

  • Za prvé, „ Spotřebitel “, “ Spojový seznam ” a související nástroje jsou importovány do souboru Java. Poté hlavní třída s názvem „ Vykořenit ' je vytvořen.
  • Dále vytvořte „spotřebitelské“ rozhraní typu Seznam s názvem „ násobit “ a nastavte ji na hodnotu „ ArrayList “, který bude vytvořen níže.
  • Využívá se „ pro 'smyčka, která se opakuje až do délky ' ArrayList “ s názvem “ dataEle “ a vynásobí každý datový prvek „ dataEle “ s “ 5 “.
  • Po tom, sekunda ' Spotřebitel ” je vytvořeno rozhraní, které vytiskne každý prvek na konzole, který je načten po procesu násobení ze streamu.
  • Nyní vytvořte a přidejte fiktivní datové prvky do „ dataEle 'ArrayList.'
  • Nakonec „ a pak() ” metoda se volá pomocí “ akceptovat() “ metoda, která akceptuje “ dataEle 'ArrayList a vrátí výsledek ' násobit “ v pořadí.

Po skončení prováděcí fáze:

Snímek ukazuje, že úloha násobení byla dokončena pomocí „ a pak() “ metoda “ Spotřebitel ' rozhraní.

Příklad 2: Použití metody „accept()“.

' akceptovat() “ metoda je funkční metoda “ Spotřebitel ' rozhraní. Přijímá jediný argument typu „ T “ a provede na něm zadané/potřebné operace. Hodnota ' Nula “ mu nesmí být poskytnut, protože nepřijímá “ Nula ” a vygenerovat výjimku.

Jeho syntaxe je uvedena níže:

neplatné přijmout ( < silný > T silný > t )

Ve výše uvedené syntaxi je „ t ” je jediný argument, na základě kterého se operují určité operace.

Pro lepší pochopení navštivte níže uvedený blok kódu:

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

// dovážející utility v Jáva soubor
kořen veřejné třídy {
public static void main ( String args [ ] ) // vytvoření hlavní metody
{
Spotřebitel < Celé číslo > disp = k - > System.out.println ( k ) ;
disp.přijmout ( 255 ) ;
Spotřebitel < Seznam < Celé číslo > > násobit = dataEle - >
{
pro ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

Spotřebitel < Seznam < Celé číslo > >
tisky = dataEle - > dataEle.stream ( ) .pro každého ( j - > Systém.výtisk ( j + '
'
) ) ;
Seznam < Celé číslo > dataEle = nový ArrayList < Celé číslo > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// Implementujte upravit pomocí přijmout ( )
množit.přijmout ( dataEle ) ;
// Implementujte dispList pomocí accept ( )
tiskne.přijmout ( dataEle ) ;
}
}

Vysvětlení výše uvedeného kódu:

  • Za prvé, „ Spotřebitel “rozhraní s názvem “ disp ” je vytvořen, který zobrazuje poskytnuté parametry na konzole bez provedení jakékoli operace.
  • Nyní, „ akceptovat() “ metoda se volá „ disp „Spotřebitel a hodnota“ 255 ” je předán této metodě.
  • Další, další' Spotřebitel “ je vytvořeno rozhraní, které využívá „ pro ” smyčka pro použití násobení na každý umístěný prvek ArrayList s názvem “ dataEle “.
  • Poté vytvořte další „ Spotřebitel rozhraní pro zobrazení „ dataEle ” vzniknou po použití násobení, které pochází z proudu.
  • Dále inicializujte ArrayList “ dataEle “ s fiktivními datovými prvky a použijte „ akceptovat() “ metoda s “ násobit ' rozhraní.
  • Nakonec zavolejte na „ akceptovat() “ pomocí metody “ tiskne ” rozhraní pro zobrazení výsledku po použití násobení v protokolu konzoly.

Po skončení realizace:

Výše uvedený snímek ukazuje, že více spotřebitelských rozhraní bylo voláno jedno po druhém pomocí „ akceptovat() “ metoda.

Příklad 3: Zpracování výjimky pro funkci After

Výjimka nastává, když „ po 'funkce' a pak() “ metoda obsahuje “ akceptovat() “ metoda. To vytváří rozhraní, které obsahuje data, která mají být zpracována rozhraními používajícími metody spotřebitelského rozhraní, jak je uvedeno níže:

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

kořen veřejné třídy {
public static void main ( String args [ ] )
{
Spotřebitel < Seznam < Celé číslo > > násobit = dataEle - >
{
pro ( int j = 0 ; j < = dataEle.size ( ) ; j++ )
dataEle.set ( j, 5 * dataEle.get ( j ) ) ;
} ;
// Consumer pro zobrazení seznamu celých čísel
Spotřebitel < Seznam < Celé číslo > >
tisk = dataEle - > dataEle.stream ( ) .pro každého ( já - > System.out.print ( já + '' ) ) ;
Seznam < Celé číslo > dataEle = nový ArrayList < Celé číslo > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
Snaž se {
vytisknout.apak ( násobit ) .akceptovat ( dataEle ) ;
}
chytit ( Výjimka e ) {
System.out.println ( 'Výjimka:' + a ) ;
}
}
}

Vysvětlení výše uvedeného bloku kódu:

  • Za prvé, „ Spotřebitel “ je vytvořeno rozhraní, které jednoduše násobí 5 ” celá čísla s datovými prvky umístěnými v poskytnutém ArrayList.
  • Dále, druhý ' Spotřebitel ” rozhraní je vytvořeno pro zobrazení každého datového prvku ArrayList, který je přijat proudem.
  • Poté je vytvořen ArrayList a inicializován pomocí fiktivních celočíselných hodnot typu.
  • Poté, „ Snaž se používá se blok „, ve kterém „ a pak() “ metoda se volá „ tisk ' rozhraní.
  • Způsobuje to „ IndexOutOfBoundsException ' protože ' pro “ je překročen limit opakování smyčky, což je vyřešeno „ chytit ”blok.

Po skončení prováděcí fáze:

Snímek ukazuje, že překladač vygeneroval výjimku IndexOutOfBoundsException.

Závěr

' Spotřebitel ” rozhraní poskytuje způsob, jak definovat opakovaně použitelné chování a provádět akce se vstupními daty bez vracení výsledku. Skládá se z ' akceptovat() ' a ' a pak() “ metody. Často se používá pro úlohy zpracování dat, kdy uživatelé potřebují provést akci s každým prvkem kolekce nebo streamu. To je vše o použití a implementaci spotřebitelského rozhraní v Javě.