2010-07-14 14 views
11

Gibt es Standard-generic "Rückruf" oder "Funktion/Methode" Typen in Java, wie System.Action<T> oder System.Func<T,U> in .NET?Java-Äquivalent von .NET Aktion <T> und Func <T,U>, etc

In meinem konkreten Fall brauche ich eine Klasse, die eine Methode umschließt, die einen (generischen) Parameter vom Typ T nimmt und nichts zurückgibt (d. H. void).

Ja, es ist einfach genug, um eine solche Klasse/Schnittstelle für mich selbst zu erstellen, aber ich würde eine Standardbibliothek Klasse bevorzugen, wenn es eine gibt.

Antwort

12

Ich glaube nicht, dass es so etwas in der Standard-Bibliothek gibt, nein (zum Zeitpunkt des Schreibens, 2010). Andere Bibliotheken haben sie - Dinge wie Guices Provider<T> und Guavas Function<F, T>, Supplier<T> und Predicate<T> ... also, wenn Sie bereits Bibliotheken verwenden, möchten Sie vielleicht prüfen, was sie in dieser Richtung bieten.

(EDIT:. Wie bereits erwähnt, sind solche Schnittstellen, die Dinge zurückkehren - so ähnlich wie Func<T, U> aber nicht ähnlich wie Action<T>)

+0

Wie wäre eines davon äquivalent? Für jeden der von Ihnen vorgeschlagenen Artikel wird ein Wert zurückgegeben. Siehe meine [verwandte Frage] (http://stackoverflow.com/q/9007008/403455). –

+0

@glenviewjeff: Sie sind nicht ähnlich wie "Aktion ", aber sie sind ähnlich wie "Func ". –

+0

@glenviewjeff: Sie können immer [java.lang.Void] (http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html) verwenden, wenn Sie die Rückgabe nicht benötigen Wert. Ein "standardisiertes" 'Func ' ist besser als nichts, imo. –

2

Java-Standardbibliothek bietet keine solche Klassen.

Sie können Functional Java Bibliothek verwenden, die fj.F1<T, fj.Unit> bietet, die im Grunde entspricht System.Action<T> von .NET.

Verwandte Themen