Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 24226|Atbildi: 1

[Avots] Detalizēts skaidrojums par kopējām funkcionālajām saskarnēm (delegātiem) Java

[Kopēt saiti]
Publicēts 16.09.2021 09:28:21 | | | |
JDK 1.8 API ietver daudzas iebūvētas funkcionālas saskarnes, piemēram, Comparator vai Runnable interfeisus, kas parasti tiek izmantoti vecajā Java, kas pievieno @FunctionalInterface anotācijas, lai tās varētu izmantot lambdas. Tagad patiešām sapratīsim to no kopīgo funkciju ieejas funkcijā.

vārdstipsapraksts
PatērētājsPatērētājs< T >Saņem T objektus, neatgriež vērtības
PredikātaPredikāts< T >Saņem objektu T un atgriež Būla vērtību
FunkcijaAmats< T, R >Saņem objektu T un atgriež objektu R
PiegādātājsPiegādātājs< T >Nodrošināt T objektus (piemēram, augus), neakceptējot vērtības
UnaryOperatorUnaryOperatorSaņem T objektu un atgriež T objektu
Binārais operatorsBinārais operatorsSaņemiet divus T objektus un atgrieziet T objektus


Interfeisu, kas apzīmēts kā FunctionalInterface, sauc par funkcionālo interfeisu, kuram var būt tikai viena pielāgota metode, bet var ietvert metodes, kas mantotas no objektu klases. Ja saskarnei ir tikai viena metode, kompilators domās, ka tā ir funkcionāla saskarne. Neatkarīgi no tā, vai tas ir funkcionāls interfeiss vai nē, jāatzīmē šādi punkti:


  • Anotāciju var atzīmēt tikai saskarnēs ar "Ir tikai viena abstrakta metode".
  • Statiskās un noklusējuma metodes JDK8 saskarnē nav abstraktas metodes.
  • Interfeiss pēc noklusējuma pārmanto java.lang.Object, tādēļ, ja interfeiss parāda, ka deklarācija ignorē metodi objektā, tā netiek uzskatīta par abstraktu metodi.
  • Anotācija nav nepieciešama, un, ja interfeiss atbilst "funkcionālā interfeisa" definīcijai, tam nav nekādas ietekmes uz to, vai anotācija tiek pievienota vai nē. Turklāt anotācija ļauj kompilatoram labāk pārbaudīt. Ja rakstāt nefunkcionālu interfeisu, bet pievienojat @FunctionInterface, kompilators ziņos par kļūdu.
  • Definējot divas pielāgotas metodes vienā saskarnē, tiks parādīta nederīga @FunctionalInterface anotācija; FunctionalInterfaceTest nav funkcionāla interfeisa kļūda.


java.util.function Tas satur vairākas klases, lai atbalstītu Java funkcionālo programmēšanu, un funkcionālās saskarnes šajā paketē ir:

Sērijas numurs
Interfeiss un apraksts
1BiConsumer<T,U>
Apzīmē darbību, kas akceptē divus ievades parametrus un neatgriež rezultātus
2BiFunction<T,U,R>
Apzīmē metodi, kas pieņem divus ievades parametrus un atgriež rezultātu
3Binārais operators<T>
Attēlo darbību, kas iedarbojas uz diviem viena tipa operatoriem, un atgriež tāda paša tipa operatora rezultātu
4Bipredikāts<T,U>
Attēlo divu parametru Būla vērtības metodi
5Būla piegādātājs
Norāda Būla vērtības rezultāta nodrošinātāju
6Patērētājs<T>
Apzīmē operāciju, kas akceptē ievades parametru un neko neatgriež
7Dubultbinārais operators
Attēlo darbību, kas iedarbojas uz diviem dubultvērtību operatoriem un atgriež dubultās vērtības rezultātu.
8Dubultpatērētājs
Apzīmē darbību, kas akceptē dubultās vērtības parametru un neatgriež rezultātu.
9Dubultā funkcija<R>
Apzīmē metodi, kas akceptē dubulto vērtību parametru un atgriež rezultātu
10Dubultpredikāts
Attēlo Būla vērtības metodi ar dubultās vērtības parametru
11Dubultais piegādātājs
Pārstāv dubultās vērtības struktūras nodrošinātāju
12DoubleToIntFunction
Akceptē dubultā tipa ievadi un atgriež int tipa rezultātu.
13Funkcija DoubleToLongFunction
Akceptē dubultā tipa ievadi un atgriež garā tipa rezultātu
14DoubleUnaryOperator
Akceptējiet tāda paša tipa parametru dubultā, un atgrieztās vērtības tips ir arī dubultā.
15Amats<T,R>
Pieņem ievades parametru, atgriež rezultātu.
16IntBinaryOperators
Akceptējiet abus parametrus ar tipu int un atgrieztās vērtības tipu int.
17IntConsumer
Akceptē int tipa ievades parametru bez atgrieztās vērtības.
18IntFunkcija<R>
Akceptē int tipa ievades parametru un atgriež rezultātu.
19Intpredikāts
: pieņem int ievades parametru un atgriež Būla rezultātu.
20IntPiegādātājs
Nav parametru, atgriež int tipa rezultātu.
21IntToDoubleFunkcija
Pieņem int tipa ievadi un atgriež dubultā tipa rezultātu.
22IntToLongFunction
Akceptē int tipa ievadi un atgriež garu tipa rezultātu.
23IntunaryOperator
Akceptējiet parametru ar tipu int un atgrieziet vērtības tipu arī int.
24LongBinaryOperator
Akceptējiet abus parametrus tipa long un atgrieztās vērtības tipa kā long.
25Ilgstošs patērētājs
Akceptēt ievades parametru, kura tips ir garš bez atgrieztās vērtības.
26Ilgstoša funkcija<R>
Akceptē garu ievades parametru un atgriež rezultātu.
27LongPredicate
R pieņem garu ievades parametru un atgriež Būla tipa rezultātu.
28Garš piegādātājs
Nav parametra, atgriež rezultātu tipa long.
29Funkcija LongToDoubleFunction
Akceptē garu tipa ievadi un atgriež dubultā tipa rezultātu.
30LongToIntFunction
Pieņem garu ievadi un atgriež int tipa rezultātu.
31LongUnaryOperator
Akceptējiet tāda paša tipa parametru kā long un atgrieziet tipa vērtību arī long.
32ObjDoubleConsumer<T>
Akceptējiet objekta tipu un dubultā tipa ievades parametru bez atgrieztās vērtības.
33ObjIntPatērētājs<T>
Pieņemiet ievades parametrus, kuru tips ir objekts un tips int bez atgrieztās vērtības.
34ObjLongConsumer<T>
Pieņem ievades parametrus, kuru tips ir objekts un tips long, neatgriežot vērtības.
35Predikāta<T>
Akceptē ievades parametru un atgriež Būla rezultātu.
36Piegādātājs<T>
Nav parametru, atgriež rezultātu.
37ToDoubleBiFunction<T,U>
Akceptē divus ievades parametrus un atgriež dubultā tipa rezultātu
38Funkcija DoubleFunction<T>
Akceptē ievades parametru un atgriež dubultā tipa rezultātu
39ToIntBiFunction<T,U>
Akceptējiet divus ievades parametrus un atgrieziet int tipa rezultātu.
40ToIntFunkcija<T>
Pieņemiet ievades parametru un atgrieziet int tipa rezultātu.
41ToLongBiFunction<T,U>
Akceptējiet divus ievades parametrus un atgrieziet garā tipa rezultātu.
42ToLongFunction<T>
Akceptējiet ievades parametru un atgrieziet garā tipa rezultātu.
43UnaryOperator<T>
Akceptējiet T tipa parametru un atgrieziet T tipa vērtību.


EsFunkcionālais interfeiss Java ir pārstāvis .NET/C#, nodod metodi kā parametru šādi:

Ievads par C# delegātiem (delegāts, darbība, funkcija, predikāts)
https://www.itsvse.com/thread-4658-1-1.html

Funkcija Kopīgās metodes un prakse

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

Lai gan funkcija< T, R > saņemt T objektus, atgriezt R objektus un tikai vienu saņemšanas un atgriešanas objektu, bet apvienojumā ar tupelēm var sasniegt vairākas ienākošās un atgriežamās vērtības, skatiet šeit:


1. piemērs: divu vērtību nodošana un to summēšana

Jūs varat izmantot vienkāršu rakstīšanu un lambda izteiksmes, kods ir šāds:





2. piemērs:

unTad metode



Sastādīšanas metode



Pilns kods



Rezultātu atgriešana



(Beigas)




Iepriekšējo:Java FeignClient interfeisa izņēmuma risinājums vairākiem identiskiem pakalpojumu nosaukumiem
Nākamo:maven projekts \target\classes\META-INF\MANIFEST. MF (sistēma...
Publicēts 19.09.2021 19:34:22 |
Java arī izskatījās, lai gan tas netiek izmantots
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com