Hi,

So I found myself writing some code which sets up a j.u.s.Stream processing
pipeline where the stream can optionally be traced/logged via a peeking
Consumer.

The default should be not to trace, in which case I initially set the
Consumer to null. But then I need to check that trace != null when setting
up the stream. This felt awkward..

Since related code was using Function.identity() as a "no mapping
configured" default, I went looking for Consumer.empty(), only to learn
that no such thing exists.

I can of course just do () -> {}, but I think Consumer.empty() conveys the
purpose a bit more clearly..

Is there some thought behind this not existing? Would it be worth adding?


/**
 * Returns a consumer which performs no operation on its input argument
 *
 * @param <T> the type of the input argument
 * @return a Consumer which performs no operation on its input argument
 */
static <T> Consumer<T> empty() {
    return t -> {};
}

Reply via email to