【发布时间】:2020-02-07 15:25:58
【问题描述】:
我有一个Consumer<T>,我想将其转换为Function<T, Void>。
我可以通过使用来实现这一点
public <T> Function<T, Void> consumerToFunction(Consumer<T> consumer)
{
return x -> {
consumer.accept(x);
return null;
};
}
但我怀疑类似的东西可能已经存在于 JDK 或公共库中。
【问题讨论】:
-
不,我不这么认为,这对我来说是正确的。也就是说——你为什么要这个?
Functions 通常应该没有副作用。 -
consumer::accept?编辑:nope,void 不能转换为 Void。此外,Void和T的顺序错误。 -
我有一个
Consumer<T>实例,而我使用的API 需要Function<T, R>。电话最终将R返还给我。我不需要那个R,可以放心地忽略它。 -
我唯一要改变的就是把 lambda 表达式放在你调用
consumerToFunction的地方,然后去掉那个方法…… -
我最近的案例是
java.util.concurrent.CompletableFuture.exceptionally(Function<Throwable, Void>)(即从没有返回值的可完成未来抛出的异常的处理程序)。