Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 24226|Vastaus: 1

[Lähde] Yksityiskohtainen selitys yleisistä toiminnallisista rajapinnoista (delegaatit) Javassa

[Kopioi linkki]
Julkaistu 16.9.2021 9.28.21 | | | |
JDK 1.8 API sisältää monia sisäänrakennettuja toiminnallisia rajapintoja, kuten Comparator- tai Runnable-rajapinnat, joita käytetään yleisesti vanhassa Javassa, ja jotka lisäävät @FunctionalInterface annotaatioita, jotta niitä voidaan käyttää lambdissa. Nyt ymmärretään asia tarkemmin Functionin yleisten funktioiden alkamisesta.

Nimityyppikuvaus
KuluttajaKuluttaja< T >Vastaanottaa T objektia, ei palauta arvoja
PredikaattiPredikaatti< T >Vastaanottaa T-objektin ja palauttaa boolen
FunktioFunktio< T, R >Vastaanottaa T-objektin ja palauttaa R-objektin
TavarantoimittajaToimittaja< T >Tarjoa T-objekteja (esim. kasvit) ilman arvojen hyväksymistä
UnaryOperatorUnaryOperatorVastaanottaa T-objektin ja palauttaa T-objektin
BinaryOperatorBinaryOperatorVastaanota kaksi T-objektia ja palauta T-objekteja


Käyttöliittymää, joka on merkitty FunctionalInterfaceksi, kutsutaan funktionaaliseksi rajapinnaksi, jolla voi olla vain yksi mukautettu metodi, mutta se voi sisältää myös metodeja, jotka on peritty objektiluokasta. Jos rajapinnalla on vain yksi metodi, kääntäjä luulee sen olevan toiminnallinen rajapinta. Olipa kyseessä toiminnallinen käyttöliittymä vai ei, seuraavat seikat on huomioitava:


  • Annotaatio voidaan merkitä rajapinnoissa vain "On vain yksi abstrakti metodi".
  • JDK8-rajapinnan staattiset ja oletusmenetelmät eivät ole abstrakteja menetelmiä.
  • Rajapinta perii oletuksena java.lang.Objectin, joten jos rajapinta osoittaa, että ilmoitus ohittaa metodin objektissa, sitä ei pidetä abstraktina metodina.
  • Annotaatiota ei vaadita, ja jos rajapinta täyttää "toiminnallisen rajapinnan" määritelmän, sillä ei ole vaikutusta siihen, lisätäänkö merkintä vai ei. Lisäksi annotaatio antaa kääntäjälle mahdollisuuden tarkistaa paremmin. Jos kirjoitat ei-toimivan rajapinnan, mutta lisäät @FunctionInterface, kääntäjä raportoi virheen.
  • Kahden mukautetun metodin määrittäminen yhdessä rajapinnassa johtaa virheelliseen '@FunctionalInterface'-merkintään; FunctionalInterfaceTest ei ole toiminnallisen rajapinnan virhe.


java.util.function Se sisältää useita luokkia Javan funktionaalisen ohjelmoinnin tukemiseksi, ja tämän paketin toiminnalliset rajapinnat ovat:

Sarjanumero
Käyttöliittymä ja kuvaus
1BiConsumer<T,U>
Edustaa toimintoa, joka hyväksyy kaksi syöteparametria eikä anna tuloksia
2BiFunction<T,U,R>
Esittää menetelmää, joka hyväksyy kaksi syöteparametria ja palauttaa tuloksen
3BinaryOperator<T>
edustaa toimintoa, joka vaikuttaa kahteen samantyyppiseen operaattoriin ja palauttaa saman tyyppisen operaattorin tuloksen
4Bipredikaatti<T,U>
Edustaa kahden parametrin totuusarvomenetelmää
5BooleanToimittaja
Esittää totuusarvotuloksen tarjoajaa
6Kuluttaja<T>
Edustaa operaatiota, joka hyväksyy syöteparametrin eikä palauta mitään
7DoubleBinaryOperator
edustaa toimintoa, joka vaikuttaa kahteen kaksinkertaiseen operaattoriin ja palauttaa kaksoisarvon tuloksen.
8DoubleConsumer
Edustaa toimintoa, joka hyväksyy kaksoisarvoparametrin eikä anna tulosta.
9DoubleFunction<R>
Edustaa menetelmää, joka hyväksyy kaksiarvoisen parametrin ja palauttaa tuloksen
10Kaksoispredikaatti
Esittää boolen arvomenetelmää, jossa on kaksoisarvoparametri
11DoubleSupplier
Edustaa kaksinkertaisen arvorakenteen tarjoajaa
12DoubleToIntFunction
Hyväksyy kaksoistyypin syötteen ja palauttaa int-tyypin tuloksen.
13DoubleToLongFunction
Hyväksyy kaksoistyypin syötteen ja palauttaa pitkän tyypin tuloksen
14DoubleUnaryOperator
Hyväksy saman tyyppinen parametri kaksinkertaisesti, ja palautusarvotyyppi on myös kaksinkertainen.
15Toiminto<T,R>
Hyväksyy syöteparametrin, palauttaa tuloksen.
16IntBinaryOperator
Hyväksy molemmat parametrit, jotka ovat type int, ja palautetaan arvotyyppi int.
17IntConsumer
Hyväksyy syöteparametrin tyypillä int ilman palautusarvoa.
18IntFunction<R>
Hyväksyy int-tyypin syöteparametrin ja palauttaa tuloksen.
19Intpredikaatti
: Hyväksyy int-syöteparametrin ja palauttaa totuusarvotuloksen.
20IntSupplier
Ei parametreja, palauttaa älykkyystyypin tuloksen.
21IntToDoubleFunction
Hyväksyy int-tyypin syötteen ja palauttaa kaksoistyypin tuloksen.
22IntToLongFunction
Hyväksyy int-tyypin syötteen ja palauttaa pitkän tyyppituloksen.
23IntUnaryOperator
Hyväksy parametri tyypistä int, ja palauta arvo, joka on myös int.
24LongBinaryOperator
Hyväksy molemmat parametrit tyyppi long ja return value type as long.
25LongConsumer
Hyväksy syöteparametri, jonka tyyppi on pitkä ilman palautusarvoa.
26LongFunction<R>
Hyväksyy pitkän tyypin syöteparametrin ja palauttaa tuloksen.
27Pitkäpredikaatti
R hyväksyy pitkän syöteparametrin ja palauttaa totuustyypin tuloksen.
28LongSupplier
Ilman parametria, palauttaa tuloksen, jonka tyyppi on pitkä.
29LongToDoubleFunction
Hyväksyy pitkän tyyppisyötteen ja palauttaa kaksoistyyppituloksen.
30LongToIntFunction
Hyväksyy pitkän tyypin syötteen ja palauttaa int-tyypin tuloksen.
31LongUnaryOperator
Hyväksy saman tyyppinen parametri kuin pitkä, ja palauta arvo, että tyypin on myös pitkä.
32ObjDoubleConsumer<T>
Hyväksy objektityyppi ja kaksoistyyppisyöteparametri ilman palautusarvoa.
33ObjIntConsumer<T>
Hyväksy syöteparametrit tyyppi objekti ja tyyppi int ilman palautusarvoa.
34ObjLongConsumer<T>
Hyväksyy syöteparametrit tyypin objektille ja tyypin pitkille ilman arvojen palauttamista.
35Predikaatti<T>
Hyväksyy syöteparametrin ja palauttaa Boolen tuloksen.
36Tavarantoimittaja<T>
Ei parametreja, palauttaa tuloksen.
37ToDoubleBiFunction<T,U>
Hyväksyy kaksi syöteparametria ja palauttaa kaksoistyypin tuloksen
38ToDoubleFunction<T>
Hyväksyy syöteparametrin ja palauttaa kaksoistyypin tuloksen
39ToIntBiFunction<T,U>
Hyväksy kaksi syöteparametria ja palauta int-tyyppinen tulos.
40ToIntFunction<T>
Hyväksy syöteparametri ja palauta int-tyyppinen tulos.
41ToLongBiFunction<T,U>
Hyväksy kaksi syöteparametria ja palauta pitkän tyypin tulos.
42ToLongFunction<T>
Hyväksy syöteparametri ja palauta pitkä tyyppitulos.
43UnaryOperator<T>
Hyväksytään parametri tyypin T ja palautetaan arvo tyypin T.


MinäJavan toiminnallinen rajapinta on .NET/C#:n delegaatti, välitetään metodi parametrina seuraavasti:

Johdanto C#-delegaatteihin (delegaatti, toiminta, funktio, predikaatti)
https://www.itsvse.com/thread-4658-1-1.html

Toiminta Yleiset menetelmät & käytännöt

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

Vaikka funktio< T, R > vastaanottavat T objektia, palauttavat R objektia ja vain yhden vastaanotto- ja palautusobjektin, mutta yhdistettynä tupleihin voidaan saavuttaa useita saapuvia ja palaavia arvoja, viitataan:


Esimerkki 1: Anna kaksi arvoa ja summata ne

Voit käyttää yksinkertaista kirjoitusta ja lambda-lausekkeita, koodi on seuraava:





Esimerkki 2:

ja sitten menetelmä



Sommittelumenetelmä



Koko koodi



Palautustulokset



(Loppu)




Edellinen:Java FeignClient Interface -poikkeusratkaisu useille identtisille palvelunimille
Seuraava:Maven-projekti \target\classes\META-INF\MANIFEST. MF (järjestelmä...
Julkaistu 19.9.2021 19.34.22 |
Java myös katsoi, vaikka sitä ei käytetä
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com