Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 24226|Odgovoriti: 1

[Vir] Podrobna razlaga pogostih funkcionalnih vmesnikov (delegatov) v Javi

[Kopiraj povezavo]
Objavljeno na 16. 09. 2021 09:28:21 | | | |
API JDK 1.8 vključuje številne vgrajene funkcionalne vmesnike, kot so Comparator ali Runnable vmesniki, ki se pogosto uporabljajo v stari Javi in dodajajo @FunctionalInterface anotacije, da jih je mogoče uporabljati na lambda igrah. Zdaj pa si to res poglejmo z vidika pogostih funkcij v funkciji.

imevrstaopis
PotrošnikPotrošnik< T >Prejme T objektov, ne vrne vrednosti
PredikatPredikat< T >Prejme objekt T in vrne booleovo vrednost
FunkcijaFunkcija< T, R >Prejme objekt T in vrne objekt R
DobaviteljDobavitelj< T >Ponudite T objekte (npr. rastline) brez sprejemanja vrednosti
UnaryOperatorUnaryOperatorPrejme T objekt in vrne T objekt
BinaryOperatorBinaryOperatorPrejmi dva objekta T in vrni objekte T


Vmesnik, označen kot Funkcionalni vmesnik, se imenuje funkcionalni vmesnik, ki lahko vsebuje le eno prilagojeno metodo, lahko pa vključuje metode, podedovane od objektnega razreda. Če ima vmesnik samo eno metodo, bo prevajalnik menil, da gre za funkcionalni vmesnik. Ne glede na to, ali gre za funkcionalni vmesnik ali ne, je treba upoštevati naslednje točke:


  • Anotacijo je mogoče označiti le na vmesnikih z "Obstaja samo ena abstraktna metoda".
  • Statične in privzete metode v vmesniku JDK8 niso abstraktne metode.
  • Vmesnik privzeto podeduje java.lang.Object, zato če vmesnik pokaže, da deklaracija preglasi metodo v objektu, se ne šteje za abstraktno metodo.
  • Anotacija ni obvezna, in če vmesnik ustreza definiciji "funkcionalnega vmesnika", nima vpliva, ali je anotacija dodana ali ne. Poleg tega označevanje omogoča prevajalniku boljše preverjanje. Če napišete nefunkcionalen vmesnik, a dodate @FunctionInterface, bo prevajalnik poročal o napaki.
  • Definiranje dveh prilagojenih metod v enem vmesniku bo povzročilo neveljavno oznako '@FunctionalInterface'; FunctionalInterfaceTest ni funkcionalna vmesniška napaka.


java.util.function Vsebuje več razredov, ki podpirajo funkcionalno programiranje v Javi, funkcionalni vmesniki v tem paketu pa so:

serijska številka
Vmesnik in opis
1BiConsumer<T,U>
Predstavlja dejanje, ki sprejme dva vhodna parametra in ne vrne nobenih rezultatov
2BiFunction<T,U,R>
Predstavlja metodo, ki sprejme dva vhodna parametra in vrne rezultat
3BinaryOperator<T>
predstavlja dejanje, ki deluje na dveh operatorjih istega tipa, in vrne rezultat istega tipa operatorja
4BiPredicate<T,U>
Predstavlja dvoparametrsko boolovsko metodo
5BooleanSupplier
Predstavlja ponudnika rezultata booleove vrednosti
6Potrošnik<T>
Predstavlja operacijo, ki sprejme vhodni parameter in ne vrne ničesar
7DoubleBinaryOperator
predstavlja dejanje, ki deluje na dva operatorja z dvojno vrednostjo, in vrne rezultat dvojne vrednosti.
8DoubleConsumer
Predstavlja dejanje, ki sprejme parameter z dvojno vrednostjo in ne vrne rezultata.
9DoubleFunction<R>
Predstavlja metodo, ki sprejme parameter z dvojno vrednostjo in vrne rezultat
10Dvojni Predikat
Predstavlja metodo booleovske vrednosti z dvojno vrednostjo
11DoubleSupplier
Predstavlja ponudnika strukture z dvojno vrednostjo
12DoubleToIntFunction
Sprejme dvojni tip vhoda in vrne rezultat int-tipa.
13DoubleToLongFunction
Sprejme dvojni tip vhoda in vrne rezultat dolgega tipa
14DoubleUnaryOperator
Če sprejmemo parameter istega tipa, je tudi tip vrnjene vrednosti podvojen.
15Funkcija<T,R>
Sprejme vhodni parameter in vrne rezultat.
16IntBinaryOperator
Sprejmemo oba parametra tipa int in vrni vrednost tipa int.
17IntConsumer
Sprejme vhodni parameter tipa int brez vrnjene vrednosti.
18IntFunction<R>
Sprejme vhodni parameter tipa int in vrne rezultat.
19IntPredikat:
: Sprejme int vhodni parameter in vrne boolov rezultat.
20IntSupplier
Brez parametrov vrne rezultat tipa int.
21IntToDoubleFunction
Sprejme vhod tipa int in vrne rezultat z dvojnim tipom.
22IntToLongFunction
Sprejme vhod tipa int in vrne rezultat dolgega tipa.
23IntUnaryOperator
Sprejmemo parameter tipa int in vrnite, da je vrednost tipa prav tako int.
24LongBinaryOperator
Sprejmemo oba parametra tipa long in vrni vrednost tipa as long.
25LongConsumer
Sprejmemo vhodni parameter tipa long brez vrnjene vrednosti.
26LongFunction<R>
Sprejme vhodni parameter dolgega tipa in vrne rezultat.
27LongPredicate
R sprejme dolg vhodni parameter in vrne rezultat booleovega tipa.
28LongSupplier
Brez parametra vrne rezultat tipa long.
29LongToDoubleFunction
Sprejme dolg tip vhoda in vrne rezultat z dvojnim tipom.
30LongToIntFunction
Sprejme dolg tip vhoda in vrne rezultat tipa int.
31LongUnaryOperator
Sprejmemo parameter istega tipa kot long in vrnemo vrednost tipa je prav tako long.
32ObjDoubleConsumer<T>
Sprejmemo tip objekta in dvojni vhodni parameter brez vrnjene vrednosti.
33ObjIntConsumer<T>
Sprejmi vhodne parametre tipa objekt in tip int brez vrnjene vrednosti.
34ObjLongConsumer<T>
Sprejema vhodne parametre tipa objekta in tipa long brez vračanja vrednosti.
35Predikat<T>
Sprejme vhodni parameter in vrne Booleov rezultat.
36Dobavitelj<T>
Brez parametrov, vrne rezultat.
37ToDoubleBiFunction<T,U>
Sprejme dva vhodna parametra in vrne rezultat dvojnega tipa
38ToDoubleFunction<T>
Sprejme vhodni parameter in vrne rezultat dvojnega tipa
39ToIntBiFunction<T,U>
Sprejmemo dva vhodna parametra in vrnemo rezultat tipa int.
40ToIntFunction<T>
Sprejmemo vhodni parameter in vrnemo rezultat tipa int.
41ToLongBiFunction<T,U>
Sprejmemo dva vhodna parametra in vrnemo rezultat dolgega tipa.
42ToLongFunction<T>
Sprejmemo vhodni parameter in vrnemo rezultat dolgega tipa.
43UnaryOperator<T>
Sprejmemo parameter tipa T in vrnemo vrednost tipa T.


JazFunkcionalni vmesnik v Javi je delegat v .NET/C#, metoda se prenaša kot parameter, kot sledi:

Uvod v C# delegate (delegate, Action, Func, predikat)
https://www.itsvse.com/thread-4658-1-1.html

Funkcija: Pogoste metode in prakse

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

Čeprav funkcije< T, R > sprejemati T objektov, vračajočih R objektov in le en objekt za sprejem in povratek, je v kombinaciji z n-ticami mogoče doseči več vhodnih in vračajočih vrednosti, glej:


Primer 1: Prenesite dve vrednosti in ju seštejte

Lahko uporabite preprosto pisavo in lambda izraze, koda je naslednja:





Primer 2:

inThen metoda



Metoda sestavljanja



Celotna koda



Rezultati povratnih rezultatov



(Konec)




Prejšnji:Java FeignClient Interface rešitev izjeme za več enakih imen storitev
Naslednji:projekt maven \cilj\razredi\META-INF\MANIFEST. MF (sistem...
Objavljeno na 19. 09. 2021 19:34:22 |
Java je prav tako izgledala, čeprav se ne uporablja
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com