有没有一种标准的方法可以将java.util.function,Consumer<T>转换为java.util.function.Function<T,Void>

2022-09-02 22:29:02

我有一个,我想把它转换成一个.Consumer<T>Function<T, Void>

我可以通过使用

public <T> Function<T, Void> consumerToFunction(Consumer<T> consumer)
{
    return x -> {
        consumer.accept(x);
        return null;
    };
}

但我怀疑JDK中可能已经存在类似的东西,或者可能存在于公共库中。


答案 1

看起来您需要将 a 适应 .您已经创建了适配器模式的一个很好的例子。Consumer<T>Function<T, R>

适配器模式是一种软件设计模式,它允许从另一个接口使用现有类的接口。

您正在让 从 中使用 .ConsumerFunction

我知道功能接口之间没有JDK内置转换器,但这似乎是应用标准模式来解决您的问题的好方法。


答案 2

标准方法不存在,但这应该可以解决问题:

Function<T, Void> adapt(final Consumer<T> consumer) {
    return t -> {
        consumer.accept(t);
        return null;
    };
}

这遵循了@rgettman接受的答案中提到的适配器模式。


推荐