2010-07-14 24 views
11

¿Hay alguna norma genérica "devolución de llamada" o "tipos de función/método" en Java, como System.Action<T> o System.Func<T,U> en .NET?equivalente Java de .NET Acción <T> y Func <T,U>, etc

En mi caso concreto, necesito una clase que ajuste un método que tome un parámetro (genérico) del tipo T y no devuelva nada (es decir, void).

Sí, es bastante fácil crear una clase/interfaz para mí, pero preferiría una clase de biblioteca estándar, si es que hay una.

Respuesta

12

No creo que haya nada en la biblioteca estándar como esta, no (en el momento de escribir este documento, 2010). Otras bibliotecas los tienen: cosas como Guice's Provider<T> y Guava Function<F, T>, Supplier<T> y Predicate<T> ... por lo que si ya está utilizando bibliotecas, es posible que desee ver lo que proporcionan en esta dirección.

(EDIT:. Como se ha señalado, esas son las interfaces que devuelven las cosas - de manera similar a Func<T, U> pero no similar a Action<T>)

+0

¿Cómo sería cualquiera de estos equivalentes? Se espera que cada uno de los elementos que sugirió devuelva un valor. Ver mi [pregunta relacionada] (http://stackoverflow.com/q/9007008/403455). –

+0

@glenviewjeff: No son similares a 'Acción ', pero son similares a 'Func '. –

+0

@glenviewjeff: siempre puede usar [java.lang.Void] (http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html) si no necesita la devolución valor. Un "Func estandarizado" 'es mejor que nada, imo. –

2

biblioteca estándar de Java no proporciona ningún tipo de clases.

Puede usar la biblioteca Functional Java que proporciona fj.F1<T, fj.Unit> que es básicamente equivalente a System.Action<T> de .NET.

Cuestiones relacionadas