Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 24226|Risposta: 1

[Fonte] Spiegazione dettagliata delle interfacce funzionali comuni (delegati) in Java

[Copiato link]
Pubblicato su 16/09/2021 09:28:21 | | | |
L'API JDK 1.8 include molte interfacce funzionali integrate, come le interfacce Comparator o Runnable comunemente usate nella vecchia Java, che aggiungono @FunctionalInterface annotazioni affinché possano essere utilizzate sulle lambda. Ora, capiamolo davvero dall'ingresso delle funzioni comuni in Funzione.

nomedigitaredescrizione
ConsumatoreConsumer< T >Riceve T oggetti, non restituisce valori
PredicatoPredicato< T >Riceve l'oggetto T e restituisce il booleano
FunzioneFunzione< T, R >Riceve l'oggetto T e restituisce l'oggetto R.
FornitoreFornitore< T >Fornire T oggetti (ad esempio piante) senza accettare valori
UnaryOperatorUnaryOperatorRiceve l'oggetto T e restituisce l'oggetto T
BinaryOperatorBinaryOperatorRicevi due oggetti T e restituisci oggetti T


Un'interfaccia etichettata come FunctionalInterface è chiamata interfaccia funzionale, che può avere un solo metodo personalizzato, ma può includere metodi ereditati dalla classe oggetto. Se un'interfaccia ha un solo metodo, il compilatore penserà che sia un'interfaccia funzionale. Che si tratti o meno di un'interfaccia funzionale, devono essere notati i seguenti punti:


  • L'annotazione può essere contrassegnata solo sulle interfacce con "C'è solo un metodo astratto".
  • I metodi statici e predefiniti nell'interfaccia JDK8 non sono metodi astratti.
  • L'interfaccia eredita java.lang.Object di default, quindi se l'interfaccia mostra che la dichiarazione sovrascrive il metodo nell'Object, non è considerata un metodo astratto.
  • L'annotazione non è obbligatoria e, se un'interfaccia soddisfa la definizione di "interfaccia funzionale", non ha effetto se l'annotazione venga aggiunta o meno. Inoltre l'annotazione permette al compilatore di controllare meglio. Se scrivi un'interfaccia non funzionale, ma aggiungi @FunctionInterface, il compilatore riporterà un errore.
  • Definire due metodi personalizzati in un'unica interfaccia comporterà un'annotazione '@FunctionalInterface' Invalida; FunctionalInterfaceTest non è un errore di interfaccia funzionale.


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

numero di serie
Interfaccia & Descrizione
1BiConsumer<T,U>
Rappresenta un'azione che accetta due parametri di input e non restituisce risultati
2BiFunzione<T,U,R>
Rappresenta un metodo che accetta due parametri di input e restituisce un risultato
3BinaryOperator<T>
rappresenta un'azione che agisce su due operatori dello stesso tipo e restituisce il risultato dello stesso tipo di operatore
4BiPredicato<T,U>
Rappresenta un metodo di valori booleani a due parametri
5BooleanSupplier
Rappresenta il fornitore del risultato del valore booleano
6Consumatore<T>
Rappresenta un'operazione che accetta un parametro di input e non restituisce nulla
7DoubleBinaryOperator
rappresenta un'azione che agisce su due operatori a doppio valore e restituisce il risultato di un doppio valore.
8DoubleConsumer
Rappresenta un'azione che accetta un parametro di doppio valore e non restituisce un risultato.
9Doppia Funzione<R>
Rappresenta un metodo che accetta un parametro a doppio valore e restituisce il risultato
10DoppioPredicato
Rappresenta un metodo di valori booleani con un parametro di doppio valore
11DoubleSupplier
Rappresenta il fornitore di una struttura a doppio valore
12DoubleToIntFunction
Accetta un input di doppio tipo e restituisce un risultato di tipo int.
13DoubleToLongFunction
Accetta un input di doppio tipo e restituisce un risultato di tipo lungo
14DoubleUnaryOperator
Accettando un parametro dello stesso tipo doppio, il valore di ritorno è anch'esso doppio.
15Funzione<T,R>
Accetta un parametro di input, restituisce un risultato.
16IntBinaryOperator
Accettare sia i parametri di tipo int che il valore di restituzione di tipo int.
17IntConsumer
Accetta un parametro di input di tipo int senza valore di ritorno.
18IntFunction<R>
Accetta un parametro di input di tipo int e restituisce un risultato.
19IntPredicate
: Accetta un parametro di input int e restituisce un risultato booleano.
20IntSupplier
Nessun parametro, restituisce un risultato di tipo int.
21IntToDoubleFunction
Accetta un input di tipo int e restituisce un risultato di doppio tipo.
22IntToLongFunction
Accetta un input di tipo int e restituisce un risultato di tipo lungo.
23IntUnaryOperator
Accettare un parametro di tipo int, e restituire il valore che il tipo è anch'esso int.
24LongBinaryOperator
Accettare sia i parametri di tipo lungo che il valore di ritorno di tipo tanto long.
25LongConsumer
Accettare un parametro di input di tipo lungo senza valore di ritorno.
26LongFunction<R>
Accetta un parametro di input di tipo lungo e restituisce un risultato.
27LongPredicate
R accetta un parametro di input lungo e restituisce un risultato di tipo booleano.
28LongSupplier
Nessun parametro, restituisce un risultato di tipo long.
29LongToDoubleFunction
Accetta un input di tipo lungo e restituisce un risultato di tipo doppio.
30LongToIntFunction
Accetta un input di tipo lungo e restituisce un risultato di tipo int.
31LongUnaryOperator
Accettare un parametro dello stesso tipo di lungo, e restituire il valore di tipo è anch'esso lungo.
32ObjDoubleConsumer<T>
Accettare un tipo di oggetto e un parametro di input di tipo doppio senza valore di ritorno.
33ObjIntConsumer<T>
Accettare i parametri di input di tipo oggetto e tipo int senza valore di ritorno.
34ObjLongConsumer<T>
Accetta parametri di input di type object e type long senza restituire valori.
35Predicato<T>
Accetta un parametro di input e restituisce un risultato booleano.
36Fornitore<T>
Nessun parametro, restituisce un risultato.
37A DoubleBiFunction<T,U>
Accetta due parametri di input e restituisce un risultato di tipo doppio
38ToDoubleFunction<T>
Accetta un parametro di input e restituisce un risultato di tipo doppio
39ToIntBiFunction<T,U>
Accettare due parametri di input e restituire un risultato di tipo int.
40ToIntFunction<T>
Accettare un parametro di input e restituire un risultato di tipo int.
41A LongBiFunction<T,U>
Accettare due parametri di input e restituire un risultato di tipo lungo.
42ToLongFunction<T>
Accettare un parametro di input e restituire un risultato di tipo lungo.
43UnaryOperator<T>
Accettare un parametro di tipo T e restituire il valore di tipo T.


IoL'interfaccia funzionale in Java è il delegato in .NET/C#, passa il metodo come parametro, come segue:

Introduzione ai delegati C# (delegato, Azione, Func, predicato)
https://www.itsvse.com/thread-4658-1-1.html

Funzione Metodi e Pratiche Comuni

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

Sebbene la funzione< T, R > ricevere T oggetti, restituire R oggetti, e solo uno ricevere e restituire oggetti, ma combinati con le tuple, possano essere ottenuti più valori in ingresso e ritorno, riferisci:


Esempio 1: Passa due valori e sommali

Puoi usare scrittura semplice e espressioni lambda, il codice è il seguente:





Esempio 2:

e Metodo Allora



Metodo Compose



Codice completo



Risultati dei risultati



(Fine)




Precedente:Soluzione di eccezione Java FeignClient Interface per più nomi di servizio identici
Prossimo:progetto maven \target\classi\META-INF\MANIFEST. MF (sistema...
Pubblicato su 19/09/2021 19:34:22 |
Anche Java ha cercato, anche se non viene usato
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com