lambda表达式和高阶函数(Lambda expressions and higher-order

2019-07-20 22:05发布

我如何与Java 8写带密封盖支持采取作为自变量的函数,返回功能值的方法?

Answer 1:

在Java API LAMBDA主类是java.util.function.Function 。

您可以使用一个参考这个接口同样的方式,你会与所有其他引用做的:创建为变量,返回它的计算等的结果。

这是很简单的例子可以帮助你:

    public class HigherOrder {

        public static void main(String[] args) {
            Function<Integer, Long> addOne = add(1L);

            System.out.println(addOne.apply(1)); //prints 2

            Arrays.asList("test", "new")
                    .parallelStream()  // suggestion for execution strategy
                    .map(camelize)     // call for static reference
                    .forEach(System.out::println);
        }

        private static Function<Integer, Long> add(long l) {
            return (Integer i) -> l + i;
        }

        private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1);
    }

如果您需要通过更多然后1点的参数,请大家看看到compose方法,但它的使用是相当棘手。

一般来说,从我看来封锁和lambda表达式在Java中基本上是语法糖,他们似乎没有函数式编程的所有功能。



文章来源: Lambda expressions and higher-order functions