是否有标准方法将java.util.function,Consumer <t>转换为java.util.function.Function <t,void =“”> </t,> </t>

时间:2015-04-16 20:02:49

标签: java java-8

我有一个Consumer<T>,我想将其转换为Function<T, Void>

我可以通过

实现这一目标
public <T> Function<T, Void> consumerToFunction(Consumer<T> consumer)
{
    return x -> {
        consumer.accept(x);
        return null;
    };
}

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

2 个答案:

答案 0 :(得分:7)

您似乎需要将Consumer<T>调整为Function<T, R>。您已经创建了Adapter Pattern的一个很好的示例。

  

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

您要从Consumer中使用Function

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

答案 1 :(得分:0)

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

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

这遵循accepted answer@rgettman中提到的适配器模式。