En el articulo anterior, estuvimos hablando bastante de las interfaces funcionales, y, anteriormente, hablamos de las lambdas, y ya en aquel momento, hicimos hincapié de la necesidad de una para las otras.
En este articulo, vamos a empezar a ver una colección bastante numerosa de interfaces funcionales proporcionadas en Java8, para simplificarnos la vida y permitirnos crear funciones mas o menos complejas utilizando lambdas
Hay casuísticas estandars a la hora de escribir código, y es, basado en esa casuísticas, que Java8 nos proporciona una colección de interfaces que nos permite implementar funciones basadas en lambdas con muy poco esfuerzo, y, que a la vez permiten que nuestros programas sean mucho mas claros y mas fáciles de seguir.
No nos debemos olvidar que nosotros podemos crear nuestras propias interfaces, e incluso, podemos heredar de estas, y ampliarla lo que necesitemos, no, eso sigue siendo importante, y la colección que vemos ahora, lo único que hacen es quitarnos el trabajo de escribirlas nosotros.
A continuación, os dejo la lista de esas interfaces nuevas, pensadas para ahorrar trabajo.
Interface | Empleabilidad |
---|---|
Function | Recibe un objeto y devuelve otro. Tanto la entrada como la salida pueden ser del mismo tipo o de tipos distintos Se implementa el método «S apply(T t)» Con respuesta genérica, pero entrada definida para tipos primitivos, disponemos de – IntFunction – DoubleFunction – LongFunction Con entrada genérica, pero fijando la salida a tipos genéricos – ToDoubleFunction – ToIntFunction – ToLongFunction Fijando entrada y salida, para utilizar únicamente tipos genéricos, tenemos – DoubleToIntFunction – DoubleToLongFunction – IntToDoubleFunction – IntToLongFunction – LongToDoubleFunction – LongToIntFunction |
BiFunction | Semejante a Function, pero recibe dos objetos y devuelve 1 En la version genérica, – debemos definir los tres tipos de objeto. Cualquier combinación es posible – Se ha de implementar el método «U apply(T t, S s)» Con entrada genérica, pero fijando la salida tenemos – ToDoubleBiFunction – ToIntBiFunction – ToLongBiFunction |
Predicate | Recibe un argumento de cualquier tipo, y devuelve un booleano Se ha de implementar el método «boolean test(T t)» Para los tipos primitivos, disponemos de las interfaces – IntPredicate – LongPredicate – DoublePredicate |
BiPredicate | Recibe dos argumento de cualquier tipo, y devuelve un booleano Se ha de implementar el método «boolean test(T t, S s)» |
Consumer | Recibe un argumento, de cualquier tipo, y no devuelve nada Se ha de implementar el método «void accept(T t)» Para los tipos primitivos, disponemos de las interfaces IntConsumer LongConsumer DoubleConsumer |
BiConsumer | Recibe dos argumento, de cualquier tipo, y no devuelve nada Se ha de implementar el método «void accept(T t, S s)» Hay un conjunto de interfaces con dos entradas, una de objeto a definir, y la otra de tipo primitivo, que son: ObjIntConsumer ObjLongConsumer ObjDoubleConsumer |
Supplier | No recibe argumento y retorna un objeto genérico Se ha de implementar el método «S get()» Hay un conjunto de interfaces pensadas para trabajar con tipos primitivos que son: BooleanSupplier IntSupplier LongSupplier DoubleSupplier |
UnaryOperator | Se trata de la especialización de Function, cuando el resultado es del mismo tipo que el argumento pasado Se implementa el método «T apply(T t)» IntUnaryOperator LongUnaryOperator DoubleUnaryOperator |
BinaryOperator | Se trata de la especialización de BiFunction, cuando tanto el resultado, como los dos argumentos pasados, son todos del mismo tipo IntBinaryOperator LongBinaruOperator DoubleBinaryOperator |
Relacionado
Descubre más desde Recursos para formacion
Suscríbete y recibe las últimas entradas en tu correo electrónico.