架构师_程序员_码农网

N Recupera la password
Registrazione

QQ登录

Un solo passo per iniziare

Ricerca
Vista:12917|Risposta: 1
打印 上一主题 下一主题

[ Informazioni]Interfacce funzionali comuni di Java (delegati)

[copia link]
A 跳转到指定楼层
proprietario
发表于 2021-9-16 09:28:21|只看该作者回帖奖励 | Scorrimento all'indietro|Modalità di lettura
L'API del JDK 1.8 include un certo numero di interfacce funzionali incorporate, comunemente utilizzate in Java più vecchio, come le interfacce Comparator o Runnable, che sono annotate con l'annotazione @FunctionalInterface in modo da poter essere utilizzate nelle lambda. Diamo ora un'occhiata concreta al punto di ingresso Function e vediamo di cosa si tratta.

nome tipo descrizione
Consumatore Consumatore< T > Riceve un oggetto T, non restituisce un valore.
Predicato Predicato< T > Riceve un oggetto T e restituisce un booleano.
Funzione Funzione< T, R > Prende un oggetto T e restituisce un oggetto R
Fornitore Fornitore< T > Fornisce un oggetto T (ad esempio, una fabbrica), non riceve un valore.
Operatore unario Operatore unario Riceve un oggetto T e restituisce un oggetto T.
Operatore binario Operatore binario Prende due oggetti T e restituisce l'oggetto T


Un'interfaccia etichettata come FunctionalInterface è chiamata interfaccia funzionale, che può avere un solo metodo personalizzato, ma può includere metodi ereditati dalla classe dell'oggetto. Se un'interfaccia ha un solo metodo, il compilatore la considera un'interfaccia funzionale. Ci sono diverse cose da notare per capire se si tratta di un'interfaccia funzionale:


  • Questa annotazione può essere marcata solo sulle interfacce che "hanno uno e un solo metodo astratto". I metodi statici e predefiniti delle interfacce JDK8 non sono considerati metodi astratti.
  • L'interfaccia eredita java.lang.Object per impostazione predefinita, quindi se l'interfaccia presenta una dichiarazione che sovrascrive un metodo di Object, nemmeno questo è considerato un metodo astratto.
  • Questa annotazione non è necessaria e non importa se un'interfaccia è conforme o meno alla definizione di "interfaccia funzionale". L'aggiunta dell'annotazione facilita il controllo da parte del compilatore. Se si scrive un'interfaccia non funzionale ma si aggiunge @FunctionInterface, il compilatore segnalerà un errore.
  • Definendo due metodi personalizzati in un'interfaccia si ottiene l'annotazione Invalid '@FunctionalInterface'; FunctionalInterfaceTest non è un errore di interfaccia funzionale. funzionale.


java.util.function Contiene molte classi per supportare la programmazione funzionale in Java; le interfacce funzionali di questo pacchetto sono:

No.
Interfaccia e descrizione
1BiConsumatore<T,U>
rappresenta un'operazione che accetta due parametri di ingresso e non restituisce alcun risultato.
2BiFunzione<T,U,R>
rappresenta un metodo che accetta due parametri in ingresso e restituisce un risultato.
3BinaryOperator<T>
rappresenta un'operazione che agisce su due operatori dello stesso tipo e restituisce un risultato dello stesso tipo.
4 OperatoreBinario<T,U>BiPredicato<T,U>
rappresenta un metodo con valore booleano e due argomenti.
5Fornitore booleano
Rappresenta il fornitore del risultato del valore booleano.
6Consumatore<T>
Rappresenta un'operazione che accetta un parametro di input e non restituisce nulla.
7Operatore DoubleBinary
Rappresenta un'operazione che agisce su due operatori a valore doppio e restituisce un risultato a valore doppio.
8DoppioConsumatore
Rappresenta un'operazione che accetta un argomento a valore doppio e non restituisce un risultato.
9DoppiaFunzione<R>
Rappresenta un metodo che accetta un argomento doppio e restituisce un risultato.
10DoppioPredicato
Rappresenta un metodo con valore booleano e un argomento con valore doppio.
11DoppioFornitore
Rappresenta il fornitore di una struttura a valore doppio.
12DoubleToIntFunction
Accetta un input di tipo double e restituisce un risultato di tipo int.
13DoubleToLongFunction
Accetta un ingresso di tipo double e restituisce un risultato di tipo long.
14Operatore DoubleUnary
Accetta un parametro di tipo double e restituisce un valore di tipo double.
15Funzione<T,R>
Accetta un parametro di ingresso e restituisce un risultato.
16Operatore IntBinario
Prende due argomenti di tipo int e restituisce un valore di tipo int.
17IntConsumer
Assume un parametro di ingresso di tipo int, senza valore di ritorno.
18IntFunction<R>
Accetta un parametro di ingresso di tipo int e restituisce un risultato .
19IntPredicato
Accetta un parametro di ingresso di tipo int e restituisce un risultato di tipo booleano.
20IntFornitore
Non accetta argomenti e restituisce un risultato di tipo int.
21IntToDoubleFunction
Prende in ingresso un int e restituisce un risultato di tipo double.
22Funzione IntToLong
Richiama un ingresso int e restituisce un risultato long.
23Operatore unario int
Accetta un parametro di tipo int e restituisce un valore di tipo int.
24Operatore LongBinary
Accetta due parametri di tipo long; anche il valore di ritorno è di tipo long.
25 LongConsumerConsumatore lungo
Accetta un parametro di ingresso di tipo long e nessun valore di ritorno.
26LongFunction<R>
Accetta un parametro di ingresso di tipo long e restituisce un risultato.
27Predicato lungo
R accetta un parametro di ingresso di tipo long e restituisce un risultato di tipo booleano.
28Fornitore lungo
Restituisce un risultato di tipo long senza argomenti.
29 Funzione da lungo a doppioFunzione LongToDouble
Prende un input long e restituisce un risultato double.
30Funzione LongToInt
Richiama un ingresso long e restituisce un risultato int.
31Operatore unario lungo
Accetta un parametro di tipo long e restituisce un valore di tipo long.
32ObjDoubleConsumer<T>
Accetta un parametro di ingresso di tipo object e un parametro di ingresso di tipo double, senza valore di ritorno.
33ObjIntConsumer<T>
Accetta un parametro di ingresso di tipo object e di tipo int, senza valore di ritorno.
34ObjLongConsumer<T>
Accetta un parametro di ingresso di tipo object e di tipo long, senza valore di ritorno.
35Predicato<T>
Accetta un parametro di ingresso e restituisce un risultato booleano.
36Fornitore<T>
Non accetta argomenti e restituisce un risultato.
37Funzione ToDoubleBiFunction<T,U>
Accetta due parametri di ingresso e restituisce un risultato di tipo double.
38ToDoubleFunction<T>
Accetta un parametro di ingresso e restituisce un doppio.
39ToIntBiFunction<T,U>
Accetta due parametri di ingresso e restituisce un risultato di tipo int.
40ToIntFunction<T>
Accetta un parametro di ingresso e restituisce un risultato di tipo int.
41ToLongBiFunction<T,U>
Accetta due parametri di ingresso e restituisce un risultato di tipo long.
42ToLongFunction<T>
Prende un parametro di ingresso e restituisce un risultato lungo.
43Operatore unario<T>
accetta un parametro di tipo T e restituisce un valore di tipo T.


L'interfaccia funzionale in Java, per come la intendo io , è il delegato in .NET/C# che passa i metodi come parametri come segue:

Introduzione ai delegati in C# (delegate, Action, Func, predicate)
h ttps:// www.itsvse.com/thread-4658-1-1.html

Funzione metodi comuni && pratica

// Applica l'oggetto Function ai parametri di input e restituisce il risultato del calcolo.
R apply(T t).

Sebbene Function< T, R > riceva l'oggetto T e restituisca l'oggetto R con un solo oggetto di ricezione e restituzione, la combinazione di tuple consente di avere più valori in ingresso e valori di restituzione:

Uso delle tuple in Java
h ttps:// www.itsvse.com/thread-10055-1-1.html

Esempio 1: Passaggio di due valori e loro somma

È possibile utilizzare la scrittura normale e la scrittura di espressioni lambda; il codice è il seguente:





Esempio due:

metodo andThen



Metodo Compose



Codice completo



Torna ai risultati



(Fine)




Precedente: Eccezioni di interfaccia multiple di Java FeignClient con la stessa soluzione per il nome del servizio
Next: Progetto maven \target\classes\META-INF\MANIFEST.MF (sistema...
NET, pubblicato solo nel processo di pratica, ha incontrato difficoltà tecniche, non fuorviare gli altri.
jimmy choo choo choo
divani outlet
发表于 2021-9-19 19:34:22|只看该作者
Non sono sicuro di essere in grado di farlo, ma darò un'occhiata a questo.
Non sono sicuro di essere in grado di farlo, ma sono sicuro di essere in grado di farlo e sono sicuro di essere in grado di farlo.
Devi effettuare il login prima di poter postare Log in | Registrati

Q uesta versione delle regole integrali


DISCLAIMER: Tutti i software, i materiali di programmazione o gli articoli pubblicati da Code Farmer sono limitati all'uso per scopi di apprendimento e di ricerca; i suddetti contenuti non devono essere utilizzati per scopi commerciali o illegali, altrimenti tutte le conseguenze saranno a carico degli utenti stessi. Le informazioni di questo sito provengono dalla rete, la disputa sul copyright non ha nulla a che fare con questo sito. È necessario rimuovere completamente il contenuto di cui sopra dal proprio computer entro 24 ore dal download. Se vi piace il programma, vi preghiamo di sostenere il software autentico, di acquistare la registrazione e di ottenere un servizio autentico migliore. In caso di violazione, si prega di contattarci via e-mail per risolvere il problema.

Posta To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 02:54

Risposta rapidaTorna all'inizioTorna all'elenco