如何在 Java 中模拟函数式编程,特别是执行诸如将函数映射到项目集合之类的操作?
map(func, new String[]{"a","b","c"});
最不冗长和笨拙的方法是什么?
最佳答案
在 Java 8 之前,函数式编程的所有尝试都会有一些冗长和/或尴尬的部分。
最直接的方法是提供一个Function
接口(interface)(比如this one form Guava),并提供各种获取和调用它的方法(比如Collections#transfrom()
,它做什么我认为您的 map()
方法应该可以)。
坏处是你需要实现Function
,并且经常使用匿名内部类来实现,它的语法非常冗长:
Collection<OutputType> result = Collections.transform(input, new Function<InputType,OutputType>() {
public OutputType apply(InputType input) {
return frobnicate(input);
}
});
Lambda expressions(在 Java 8 中引入)使这变得相当容易(并且可能更快)。使用 lambda 的等效代码如下所示:
Collection<OutputType> result = Collections.transform(input, SomeClass::frobnicate);
或更冗长但更灵活:
Collection<OutputType> result = Collections.transform(input, in -> frobnicate(in));
关于java - Java中的函数式编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5962062/