Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 24226|Svar: 1

[Kilde] Detaljeret forklaring af almindelige funktionelle grænseflader (delegerede) i Java

[Kopier link]
Opslået på 16/09/2021 09.28.21 | | | |
JDK 1.8 API'et indeholder mange indbyggede funktionelle grænseflader, såsom Comparator eller Runnable-grænseflader, som ofte blev brugt i gammel Java, og som tilføjer @FunctionalInterface annotationer, så de kan bruges på lambdas. Lad os nu virkelig forstå det ud fra udgangen af almindelige funktioner i Funktion.

Navnslagsbeskrivelse
ForbrugerForbruger< T >Modtager T-objekter, returnerer ikke værdier
PrædikatPrædikat< T >Modtager T-objektet og returnerer booleanen
FunktionFunktion< T, R >Modtager T-objekt og returnerer R-objekt
LeverandørLeverandør< T >Giv T-objekter (f.eks. planter) uden at acceptere værdier
UnaryOperatorUnaryOperatorModtager T-objekt og returnerer T-objekt
BinaryOperatorBinaryOperatorModtag to T-objekter og returner T-objekter


Et interface mærket som en FunctionalInterface kaldes et funktionelt interface, som kun kan have én brugerdefineret metode, men kan inkludere metoder arvet fra objektklassen. Hvis et interface kun har én metode, vil compileren tro, at det er et funktionelt interface. Uanset om det er en funktionel grænseflade eller ej, skal følgende punkter bemærkes:


  • Annotationen kan kun markeres på grænseflader med "Der findes kun én abstrakt metode".
  • De statiske og standardmetoder i JDK8-grænsefladen er ikke abstrakte metoder.
  • Interfacet arver som standard java.lang.Object, så hvis interfacet viser, at deklarationen overskriver metoden i objektet, betragtes det ikke som en abstrakt metode.
  • Annotationen er ikke nødvendig, og hvis et interface opfylder definitionen af en "funktionel grænseflade", har det ingen effekt, om annotationen tilføjes eller ej. Derudover gør annoteringen det muligt for compileren at tjekke bedre. Hvis du skriver et ikke-funktionelt interface, men tilføjer @FunctionInterface, vil compileren rapportere en fejl.
  • Definition af to brugerdefinerede metoder i én grænseflade vil resultere i en ugyldig '@FunctionalInterface'-annotation; FunctionalInterfaceTest er ikke en funktionel interfacefejl.


java.util.function Den indeholder en række klasser til understøttelse af Javas funktionelle programmering, og de funktionelle grænseflader i denne pakke er:

serienummer
Interface & Beskrivelse
1BiConsumer<T,U>
Repræsenterer en handling, der accepterer to inputparametre og ikke returnerer nogen resultater
2BiFunktion<T,U,R>
Repræsenterer en metode, der accepterer to inputparametre og returnerer et resultat
3BinaryOperator<T>
repræsenterer en handling, der virker på to operatorer af samme type, og returnerer resultatet af samme type operator
4Biprædikat<T,U>
Repræsenterer en to-parameter boolean-værdi metode
5BooleanSupplier
Repræsenterer leverandøren af det booleske værdiresultat
6Forbruger<T>
Repræsenterer en operation, der accepterer en inputparameter og returnerer intet
7DoubleBinaryOperator
repræsenterer en handling, der virker på to dobbeltværdiede operatorer, og returnerer resultatet af en dobbeltværdi.
8DoubleConsumer
Repræsenterer en handling, der accepterer en dobbeltværdiparameter og ikke returnerer et resultat.
9DoubleFunction<R>
Repræsenterer en metode, der accepterer en dobbeltværdi parameter og returnerer resultatet
10Dobbeltprædikat
Repræsenterer en boolesk værdimetode med en dobbeltværdiparameter
11DoubleSupplier
Repræsenterer leverandøren af en dobbeltværdistruktur
12DoubleToIntFunction
Accepterer et dobbelttype-input og returnerer et int-type-resultat.
13DoubleToLongFunction
Accepterer et dobbelttype-input og returnerer et langtype-resultat
14DoubleUnaryOperator
Accepter en parameter af samme type dobbelt, og returværditypen er også dobbelt.
15Funktion<T,R>
Accepterer en inputparameter, returnerer et resultat.
16IntBinaryOperator
Accepter begge parametre af typen int, og returner værdien type int.
17IntConsumer
Accepterer en inputparameter af typen int uden returværdi.
18IntFunction<R>
Accepterer en int-type inputparameter og returnerer et resultat.
19Intpredikat
: Accepterer en int-inputparameter og returnerer et boolsk resultat.
20IntSupplier
Ingen parametre, returnerer et int-type resultat.
21IntToDoubleFunction
Accepterer et int-type input og returnerer et dobbelttype-resultat.
22IntToLongFunction
Accepterer et int-type input og returnerer et long type-resultat.
23IntUnaryOperator
Accepter en parameter af typen int, og returner værdien af typen også int.
24LongBinaryOperator
Accepter både parametre af typen long og returner value type as long.
25LongConsumer
Accepter en inputparameter af typen long uden returværdi.
26LongFunction<R>
Accepterer en langtype-inputparameter og returnerer et resultat.
27Langprædikat
R accepterer en lang inputparameter og returnerer et boolesk-type resultat.
28LongSupplier
Ingen parameter, returnerer et resultat af typen lang.
29LongToDoubleFunction
Accepterer et langt type-input og returnerer et dobbelttype-resultat.
30LongToIntFunction
Accepterer et langt input-type og returnerer et int-type-resultat.
31LongUnaryOperator
Accepter en parameter af samme type som lang, og returner værdien af typen også er lang.
32ObjDoubleConsumer<T>
Accepter en objekttype og en dobbelttype-inputparameter uden returværdi.
33ObjIntConsumer<T>
Accepter inputparametre af typen objekt og type int uden returværdi.
34ObjLongConsumer<T>
Accepterer inputparametre for type objekt og type long uden at returnere værdier.
35Prædikat<T>
Accepterer en inputparameter og returnerer et boolesk resultat.
36Leverandør<T>
Ingen parametre, returnerer et resultat.
37ToDoubleBiFunction<T,U>
Accepterer to inputparametre og returnerer et dobbelttyperesultat
38TilDobbeltFunktion.<T>
Accepterer en inputparameter og returnerer et dobbelttyperesultat
39ToIntBiFunction<T,U>
Accepter to inputparametre og returner et int-type resultat.
40TilIntFunction<T>
Accepter en inputparameter og returner et int-type resultat.
41ToLongBiFunction<T,U>
Accepter to inputparametre og returner et long-type resultat.
42ToLongFunction<T>
Accepter en inputparameter og returner et resultat med lang type.
43UnaryOperator<T>
Accepter en parameter af typen T og returner værdien af typen T.


JegDen funktionelle grænseflade i Java er delegeret i .NET/C#, overlad metoden som parameter, som følger:

Introduktion til C#-delegerede (delegeret, Handling, Afslutning, prædikat)
https://www.itsvse.com/thread-4658-1-1.html

Funktion Almindelige metoder og praksisser

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

Selvom Funktion< T, R > modtager T-objekter, returnerer R-objekter, og kun ét modtager- og returnerobjekt, men kombineret med tupler kan flere indkommende og returnerende værdier opnås, henvises til:


Eksempel 1: Send to værdier og summer dem sammen

Du kan bruge almindelig skrivning og lambda-udtryk, koden er som følger:





Eksempel 2:

ogSå-metoden



Compose-metoden



Fuld kode



Resultater fra retur



(Slut)




Tidligere:Java FeignClient Interface undtagelsesløsning for flere identiske servicenavne
Næste:Maven-projekt \Target\Classes\META-INF\MANIFEST. MF (system...
Opslået på 19/09/2021 19.34.22 |
Java kiggede også, selvom det ikke bruges
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com