【发布时间】:2011-04-28 22:34:50
【问题描述】:
Googe Guava for Java 是否有一个具有 void 返回值的 Function 内部类,例如 C# 的 action?我已经厌倦了制作一堆毫无意义的返回值的Function<Float, Integer>。
【问题讨论】:
标签: c# java functional-programming guava
Googe Guava for Java 是否有一个具有 void 返回值的 Function 内部类,例如 C# 的 action?我已经厌倦了制作一堆毫无意义的返回值的Function<Float, Integer>。
【问题讨论】:
标签: c# java functional-programming guava
您可以使用Function<Float, Void> 并让它返回null 以使您的意图更加清晰。或者,如果您愿意,也可以创建自己的抽象类来实现 Function<T, Void>。
但是不,Guava 没有类似的东西......它也没有任何旨在使用类似东西的方法,例如 forEach 类型的方法。如果您使用的 Guava 的方法使用 Functions 和 Function<Float, Void> 或类似的......我不会真的推荐,因为这些方法不是为此而设计的(即使你 can 与其中一些)。如果您为此使用自己的方法,我会说只需制作您自己的界面,例如Callback<T>。
【讨论】:
在我看来,这似乎是矛盾的;你想使用一个函数(它根据输入值计算一个值),但不想返回一个值(函数通常这样做;这就是它们应该如何将返回值传达给调用者)。
那为什么不干呢
for (Value v : values) {
doYourThing(v);
}
它比创建函数更紧凑,性能也更好。事实上,如果我正确理解您的用法,使用 Function 不会带来任何好处,只会添加相当多的样板代码。
【讨论】: