2010-07-14 13 views
11

Esistono tipi standard di "callback" o "funzione/metodo" generici in Java, come System.Action<T> o System.Func<T,U> in .NET?Java equivalente di .NET Action <T> e Func <T,U>, ecc.

Nel mio caso concreto, ho bisogno di una classe che racchiuda un metodo che accetta un parametro (generico) di tipo T e non restituisce nulla (ad esempio void).

Sì, è abbastanza facile creare tale classe/interfaccia per me stesso, ma preferirei una classe di libreria standard se ce n'è una.

risposta

12

Non credo che ci sia qualcosa nella libreria standard come questa, no (al momento della scrittura, 2010). Altre librerie li hanno: cose come Provider<T> di Guice e Function<F, T>, Supplier<T> e Predicate<T> di Guava ... quindi se stai già utilizzando le librerie, potresti voler esaminare ciò che forniscono in questa direzione.

(EDIT:. Come è noto, queste sono le interfacce che restituiscono le cose - in modo simile a Func<T, U> ma non simile a Action<T>)

+0

In che modo uno di questi è equivalente? Ci si aspetta che ognuno degli articoli suggeriti restituisca un valore. Vedi la mia [domanda correlata] (http://stackoverflow.com/q/9007008/403455). –

+0

@glenviewjeff: Non sono simili a "Azione ", ma sono simili a "Func ". –

+0

@glenviewjeff: puoi sempre usare [java.lang.Void] (http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html) se non hai bisogno del ritorno valore. Un "standardizzato" 'Func ' è meglio di niente, imo. –

2

libreria standard di Java non fornisce tali classi.

È possibile utilizzare la libreria Functional Java che fornisce fj.F1<T, fj.Unit> che è sostanzialmente equivalente a System.Action<T> da .NET.

Problemi correlati