Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 24226|Odpoveď: 1

[Zdroj] Podrobné vysvetlenie bežných funkčných rozhraní (delegátov) v Jave

[Kopírovať odkaz]
Zverejnené 16. 9. 2021 9:28:21 | | | |
API JDK 1.8 obsahuje mnoho zabudovaných funkčných rozhraní, ako sú Comparator alebo Runnable rozhrania bežne používané v starej Jave, ktoré pridávajú @FunctionalInterface anotácií, aby ich bolo možné použiť na lambda. Teraz to naozaj pochopme zo vstupu bežných funkcií vo funkcii.

menotyppopis
SpotrebiteľSpotrebiteľ< T >Prijíma T objektov, nevracia hodnoty
PredikátPredikáte< T >Prijíma objekt T a vracia booleovský bod
FunkciaFunkcia< T, R >Prijíma objekt T a vracia objekt R
DodávateľDodávateľ< T >Poskytnúť T objektov (napr. rastliny) bez prijatia hodnôt
UnaryOperatorUnaryOperatorPrijíma objekt T a vracia objekt T
BinaryOperatorBinaryOperatorPrijať dva objekty T a vráť objekty T


Rozhranie označené ako FunctionalInterface sa nazýva funkčné rozhranie, ktoré môže mať len jednu vlastnú metódu, ale môže zahŕňať metódy zdedené z danej objektovej triedy. Ak má rozhranie len jednu metódu, kompilátor si bude myslieť, že ide o funkčné rozhranie. Či už ide o funkčné rozhranie alebo nie, je potrebné poznamenať nasledujúce body:


  • Anotácia môže byť na rozhraní označená iba pomocou "Existuje len jedna abstraktná metóda".
  • Statické a predvolené metódy v rozhraní JDK8 nie sú abstraktné metódy.
  • Rozhranie automaticky dedí java.lang.Object, takže ak rozhranie ukáže, že deklarácia prepisuje metódu v objekte, nepovažuje sa za abstraktnú metódu.
  • Anotácia nie je povinná a ak rozhranie spĺňa definíciu "funkčného rozhrania", nemá to žiadny vplyv, či je anotácia pridaná alebo nie. Navyše anotácia umožňuje kompilátoru lepšie kontrolovať. Ak napíšete nefunkčné rozhranie, ale pridáte @FunctionInterface, kompilátor nahlási chybu.
  • Definovanie dvoch vlastných metód v jednom rozhraní vedie k neplatnej anotácii '@FunctionalInterface'; FunctionalInterfaceTest nie je funkčná chyba rozhrania.


java.util.function Obsahuje niekoľko tried na podporu funkcionálneho programovania v Jave a funkčné rozhrania v tomto balíku sú:

Sériové číslo
Rozhranie a popis
1BiConsumer<T,U>
Predstavuje akciu, ktorá prijíma dva vstupné parametre a nevracia žiadne výsledky
2BiFunction<T,U,R>
Predstavuje metódu, ktorá prijíma dva vstupné parametre a vracia výsledok
3BinaryOperator<T>
predstavuje akciu, ktorá pôsobí na dva operátory rovnakého typu a vracia výsledok toho istého typu operátora
4BiPredicate<T,U>
Reprezentuje dvojparametrovú booleovskú metódu
5BooleanSupplier
Predstavuje poskytovateľa výsledku booleovskej hodnoty
6Spotrebiteľ<T>
Predstavuje operáciu, ktorá prijíma vstupný parameter a nevracia nič
7DoubleBinaryOperator
predstavuje akciu, ktorá pôsobí na dva operátory s dvojnásobnou hodnotou, a vráti výsledok dvojitej hodnoty.
8DoubleConsumer
Predstavuje akciu, ktorá akceptuje parameter s dvojitou hodnotou a nevráti výsledok.
9DoubleFunction<R>
Predstavuje metódu, ktorá prijíma parameter s dvojnásobnou hodnotou a vracia výsledok
10DoublePredikát
Reprezentuje metódu booleovskej hodnoty s parametrom dvojitej hodnoty
11DoubleSupplier
Predstavuje poskytovateľa štruktúry s dvojitou hodnotou
12DoubleToIntFunction
Prijíma dvojitý typ vstupu a vracia výsledok int-typu.
13DoubleToLongFunction
Prijíma dvojitý typ vstupu a vracia výsledok dlhého typu
14DoubleUnaryOperator
Ak prijmeme parameter rovnakého typu, zdvojnásobíme a typ vrátenej hodnoty je tiež dvojnásobný.
15Funkcia<T,R>
Prijíma vstupný parameter, vráti výsledok.
16IntBinaryOperator
Prijmeme oba parametre typu int a vráťte hodnotu typu int.
17IntConsumer
Prijíma vstupný parameter typu int bez návratovej hodnoty.
18IntFunction<R>
Prijíma vstupný parameter typu int a vracia výsledok.
19IntPredikát
: Prijíma vstupný parameter int a vracia booleovský výsledok.
20IntSupplier
Žiadne parametre, vráti výsledok typu int.
21IntToDoubleFunction
Prijíma vstup typu int a vracia výsledok s dvojitým typom.
22IntToLongFunction
Prijíma vstup typu int a vracia výsledok dlhého typu.
23IntUnaryOperator
Prijmeme parameter typu int a vráťme hodnotu typu int.
24LongBinaryOperator
Prijmeme oba parametre typu long a return value type as long.
25LongConsumer
Prijmeme vstupný parameter typu long bez vrátenej hodnoty.
26LongFunction<R>
Prijíma vstupný parameter dlhého typu a vracia výsledok.
27LongPredikát
R prijíma dlhý vstupný parameter a vracia výsledok booleovského typu.
28LongSupplier
Bez parametra vráti výsledok typu long.
29LongToDoubleFunction
Prijíma dlhý typ vstupu a vracia výsledok s dvojitým typom.
30LongToIntFunction
Prijíma vstup dlhého typu a vracia výsledok typu int.
31LongUnaryOperator
Prijmeme parameter rovnakého typu ako long a vráťme hodnotu typu je tiež long.
32ObjDoubleConsumer<T>
Prijmeme typ objektu a dvojitý typ vstupného parametra bez návratovej hodnoty.
33ObjIntConsumer<T>
Prijmite vstupné parametre typu objektu a typu int bez návratovej hodnoty.
34ObjLongConsumer<T>
Prijíma vstupné parametre typu objektu a typu long bez vrátenia hodnôt.
35Predikát<T>
Prijíma vstupný parameter a vracia Booleovský výsledok.
36Dodávateľ<T>
Žiadne parametre, vráti výsledok.
37ToDoubleBiFunction<T,U>
Prijíma dva vstupné parametre a vracia výsledok dvojitého typu
38ToDoubleFunction<T>
Prijíma vstupný parameter a vracia výsledok dvojitého typu
39ToIntBiFunction<T,U>
Prijmeme dva vstupné parametre a vráťte výsledok typu int.
40ToIntFunction<T>
Prijmeme vstupný parameter a vráťte výsledok typu int.
41ToLongBiFunction<T,U>
Prijmeme dva vstupné parametre a vráťte výsledok dlhého typu.
42ToLongFunction<T>
Prijmeme vstupný parameter a vráťte výsledok dlhého typu.
43UnaryOperator<T>
Prijmeme parameter typu T a vráťte hodnotu typu T.


JaFunkčné rozhranie v Jave je delegát v .NET/C#, prenáša metódu ako parameter nasledovne:

Úvod do C# delegátov (delegovať, Akcia, Func, predikát)
https://www.itsvse.com/thread-4658-1-1.html

Funkcia Bežné metódy a postupy

//将Function对象应用到输入的参数上,然后返回计算结果。
R apply(T t);

Aj keď funkcie< T, R > prijímať T objektov, vrátiť R objektov a len jeden prijímať a vracať objekty, v kombinácii s n-ticami je možné dosiahnuť viacero prichádzajúcich a vracajúcich hodnôt, odkazujte na:


Príklad 1: Prejsť dvoma hodnotami a sčítať ich

Môžete použiť jednoduché písmo a lambda výrazy, kód je nasledovný:





Príklad 2:

a potom metóda



Metóda kompose



Plný kód



Výsledky návratu



(Koniec)




Predchádzajúci:Java FeignClient Interface riešenie výnimky pre viacero identických názvov služieb
Budúci:projekt maven \target\class\META-INF\MANIFEST. MF (systém...
Zverejnené 19. 9. 2021 19:34:22 |
Java tiež vyzerala, hoci sa nepoužíva
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com