I\'m looking for the inverse of Supplier
in Guava. I hoped it would be called Consumer
– nope – or Sink
– exists, but is for pri
You can use a Function
and set the second Argument to java.lang.Void this Function
can only return null
.
You have already found the answer. If you just want to visit, you can use filter with a predicate that always returns true; if you are super defensive you can use any predicate and use an or function with an alwaysTrue in the filter itself; just add the or
at the end to avoid shortcircuiting.
The problem is that even though I agree that conceptually Predicate and Consumer are different since a Predicate should be as stateless as possible and not have side effects while a consumer is only about the side effects, in practice the only syntactic difference is that one returns a boolean (that can be ignored) and the other void. If Guava had a Consumer, it would need to either duplicate several of the methods that take a Predicate to also take a Consumer or have Consumer inherit from Predicate.
Your alternatives are:
In all of these languages, you can use functional interfaces conveniently, so you could also use e.g. Functional Java's Effect.
Otherwise, you better rely on existing language constructs for performing side effects, e.g. the built-in for
loop. Java < 8 inflicts tremendous syntactic overhead when using lambdas. See this question and this discussion.