我有一个Consumer<T>
,我想将其转换为Function<T, Void>
。
我可以通过
实现这一目标public <T> Function<T, Void> consumerToFunction(Consumer<T> consumer)
{
return x -> {
consumer.accept(x);
return null;
};
}
但我怀疑这样的东西可能已经存在于JDK中,或者可能已存在于公共库中。
答案 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中提到的适配器模式。