Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 24226|Svare: 1

[Kilde] Detaljert forklaring av vanlige funksjonelle grensesnitt (delegater) i Java

[Kopier lenke]
Publisert på 16.09.2021 09:28:21 | | | |
JDK 1.8 API-et inkluderer mange innebygde funksjonelle grensesnitt, som Comparator eller Runnable-grensesnittene som ofte ble brukt i gammel Java, og som legger til @FunctionalInterface annotasjoner slik at de kan brukes på lambdas. La oss nå virkelig forstå det fra inngangen til vanlige funksjoner i Funksjon.

navntypebeskrivelse
ForbrukerForbruker< T >Mottar T-objekter, returnerer ikke verdier
PredikatPredikat< T >Mottar T-objektet og returnerer booleanen
FunksjonFunksjon< T, R >Mottar T-objekt og returnerer R-objekt
LeverandørLeverandør< T >Gi T-objekter (f.eks. planter) uten å akseptere verdier
UnaryOperatorUnaryOperatorMottar T-objekt og returnerer T-objekt
BinærOperatorBinærOperatorMotta to T-objekter og returner T-objekter


Et grensesnitt merket som FunctionalInterface kalles et funksjonelt grensesnitt, som kun kan ha én egendefinert metode, men kan inkludere metoder arvet fra objektklassen. Hvis et grensesnitt bare har én metode, vil kompilatoren tro at det er et funksjonelt grensesnitt. Enten det er et funksjonelt grensesnitt eller ikke, må følgende punkter noteres:


  • Annotasjonen kan bare markeres på grensesnitt med «Det finnes bare én abstrakt metode».
  • De statiske og standardmetodene i JDK8-grensesnittet er ikke abstrakte metoder.
  • Grensesnittet arver som standard java.lang.Object, så hvis grensesnittet viser at deklarasjonen overstyrer metoden i objektet, regnes den ikke som en abstrakt metode.
  • Annotasjonen er ikke nødvendig, og hvis et grensesnitt oppfyller definisjonen av et "funksjonelt grensesnitt", har det ingen effekt på om annotasjonen legges til eller ikke. I tillegg gjør annotasjonen at kompilatoren kan sjekke bedre. Hvis du skriver et ikke-funksjonelt grensesnitt, men legger til @FunctionInterface, vil kompilatoren rapportere en feil.
  • Å definere to tilpassede metoder i ett grensesnitt vil resultere i en ugyldig '@FunctionalInterface'-annotasjon; FunctionalInterfaceTest er ikke en funksjonell grensesnittfeil.


java.util.function Den inneholder en rekke klasser for å støtte Javas funksjonelle programmering, og de funksjonelle grensesnittene i denne pakken er:

serienummer
Grensesnitt og beskrivelse
1BiConsumer<T,U>
Representerer en handling som aksepterer to inngangsparametere og ikke returnerer noen resultater
2BiFunction<T,U,R>
Representerer en metode som aksepterer to inngangsparametere og returnerer et resultat
3BinærOperator<T>
representerer en handling som virker på to operatorer av samme type, og returnerer resultatet av samme type operator
4Bipredikat<T,U>
Representerer en to-parameter boolsk verdimetode
5BooleanSupplier
Representerer leverandøren av det boolske verdiresultatet
6Forbruker<T>
Representerer en operasjon som aksepterer en inputparameter og returnerer ingenting
7DoubleBinaryOperator
representerer en handling som virker på to dobbel-verdi-operatorer, og returnerer resultatet av en dobbel-verdi.
8DoubleConsumer
Representerer en handling som aksepterer en dobbelverdiparameter og ikke returnerer et resultat.
9DoubleFunction<R>
Representerer en metode som aksepterer en dobbel parameter og returnerer resultatet
10Dobbeltpredikat
Representerer en boolsk verdimetode med en dobbel verdiparameter
11DoubleSupplier
Representerer leverandøren av en dobbelverdistruktur
12DoubleToIntFunction
Godtar en dobbel-type input og returnerer et int-type resultat.
13DoubleToLongFunction
Godtar en dobbelttype-inngang og returnerer et langtype-resultat
14DoubleUnaryOperator
Godta en parameter av samme type dobbel, og returverditypen er også dobbel.
15Funksjon<T,R>
Godtar en inputparameter, returnerer et resultat.
16IntBinaryOperator
Godta begge parameterne av typen int, og returner verdien type int.
17IntConsumer
Godtar en inputparameter av typen int uten returverdi.
18IntFunction<R>
Godtar en int-type inputparameter og returnerer et resultat.
19IntPredikat
: Godtar en int inputparameter og returnerer et boolsk resultat.
20IntSupplier
Ingen parametere, returnerer et resultat av int-type.
21IntToDoubleFunction
Godtar en int-type input og returnerer et dobbelttyperesultat.
22IntToLongFunction
Godtar en int-type input og returnerer et long type-resultat.
23IntUnaryOperator
Aksepter en parameter av typen int, og returner verdien som også er int.
24LongBinaryOperator
Godta både parametere av typen long og returner value type as long.
25LongConsumer
Godta en inputparameter av typen long uten returverdi.
26LongFunction<R>
Godtar en lang type inputparameter og returnerer et resultat.
27Langpredikat
R aksepterer en lang inputparameter og returnerer et boolsk type resultat.
28LongSupplier
Ingen parameter, returnerer et resultat av type long.
29LongToDoubleFunction
Godtar en long type-input og returnerer et dobbelttype-resultat.
30LongToIntFunction
Godtar en long type-input og returnerer et resultat av int-type.
31LongUnaryOperator
Aksepter en parameter av samme type som lang, og returner verdien av typen som også er lang.
32ObjDoubleConsumer<T>
Aksepter en objekttype og en dobbel type inputparameter uten returverdi.
33ObjIntConsumer<T>
Godta inputparametere av type objekt og type int uten returverdi.
34ObjLongConsumer<T>
Godtar inputparametere for type object og type long uten å returnere verdier.
35Predikat<T>
Godtar en inputparameter og returnerer et boolsk resultat.
36Leverandør<T>
Ingen parametere, gir et resultat.
37ToDoubleBiFunction<T,U>
Godtar to inngangsparametere og returnerer et dobbelttyperesultat
38TilDobbelFunksjon<T>
Godtar en inputparameter og returnerer et dobbelttype-resultat
39ToIntBiFunction<T,U>
Godta to inngangsparametere og returner et resultat av int-type.
40ToIntFunction<T>
Aksepter en inputparameter og returner et int-type resultat.
41ToLongBiFunction<T,U>
Aksepter to inngangsparametere og returner et longtype-resultat.
42ToLongFunction<T>
Aksepter en inputparameter og returner et resultat med lang type.
43UnaryOperator<T>
Aksepter en parameter av type T og returner verdien av type T.


JegDet funksjonelle grensesnittet i Java er delegaten i .NET/C#, passerer metoden som en parameter, som følger:

Introduksjon til C#-delegater (delegat, handling, func, predikat)
https://www.itsvse.com/thread-4658-1-1.html

Funksjon Felles metoder og praksiser

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

Selv om Funksjon< T, R > motta T-objekter, returnere R-objekter, og bare ett mottaks- og returobjekt, men kombinert med tupler kan flere innkommende og returnerende verdier oppnås, referer til:


Eksempel 1: Overfør to verdier og summer dem

Du kan bruke enkel skrift og lambda-uttrykk, koden er som følger:





Eksempel 2:

ogSå-metoden



Compose-metoden



Fullstendig kode



Returresultater



(Slutt)




Foregående:Java FeignClient Interface-unntaksløsning for flere identiske tjenestenavn
Neste:Maven-prosjektet \target\classes\META-INF\MANIFEST. MF (system...
Publisert på 19.09.2021 19:34:22 |
Java så også etter, selv om det ikke brukes
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com