2010-07-14 43 views
11

Y at-il une "fonction/méthode" générique standard "rappel" ou types en Java, comme System.Action<T> ou System.Func<T,U> dans .NET?équivalent Java d'action .NET <T> et Func <T,U>, etc

Dans mon cas concret, j'ai besoin d'une classe qui enveloppe une méthode qui prend un paramètre (générique) de type T et ne renvoie rien (c'est-à-dire void).

Oui, il est assez facile de créer une telle classe/interface pour moi-même, mais je préférerais une classe de bibliothèque standard s'il y en a une.

Répondre

12

Je ne crois pas qu'il y ait quoi que ce soit dans la bibliothèque standard comme ça, non (au moment de la rédaction, 2010). D'autres bibliothèques les ont - des choses comme Provider<T> de Guice et Function<F, T> de Guava, Supplier<T> et Predicate<T> ... donc si vous utilisez déjà des librairies, vous pouvez regarder ce qu'elles fournissent dans ce sens.

(EDIT:. Comme il est indiqué, ce sont les interfaces qui renvoient les choses - si semblables à Func<T, U> mais pas similaire à Action<T>)

+0

Comment l'un d'entre eux serait-il équivalent? Chacun des éléments que vous avez suggéré devrait renvoyer une valeur. Voir ma [question connexe] (http://stackoverflow.com/q/9007008/403455). –

+0

@glenviewjeff: Ils ne sont pas similaires à 'Action ', mais ils sont similaires à 'Func '. –

+0

@glenviewjeff: Vous pouvez toujours utiliser [java.lang.Void] (http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html) si vous n'avez pas besoin du retour valeur. Un "standardisé" 'Func ' est mieux que rien, imo. –

2

Java bibliothèque standard ne fournit pas de telles classes.

Vous pouvez utiliser la bibliothèque Functional Java qui fournit fj.F1<T, fj.Unit> qui est fondamentalement équivalent à System.Action<T> à partir de .NET.