lambda初探

2019-10-12  本文已影响0人  何德何能者
public class LambdaTest {

    /**
     * 返回lambda表达式
     * @param <T>
     * @return
     */
    public <T> Function<T, Integer> returnFun(T t) {
        return (v) -> Integer.parseInt(t.toString());
    }

    // 要构造lambda表达式,java最简单的语法是
    // () -> i; 表示,没有输入, 返回一个值
    // (T) -> R; 表示,一个输入,返回一个值
    // ...

    /**
     * 接收Function作为参数
     * 表示lambda表达式将接收到一个int输入, 然后返回一个输出, 这里int输入固定是2
     * @param fun 如果fun: (i)-> 9 + i; 则整个函数等价于(i)-> 9 + 2;
     * @param <R>
     * @return
     */
    public <R> R callFun(Function<Integer, R> fun) {
        return fun.apply(2); // 这里是执行表达式, 输入参数值是2
//        return (i) -> i;
    }

    @Test
    public void function() {
//        System.out.printf("I'm a function");
//        IntStream.range(1, 10).filter(i -> i == 1);
        System.out.println( "" + callFun((i) -> 9 + i));
        Function<Integer, Integer> fInt = (i) -> 9 + 2;
        System.out.println("" + fInt.apply(10));

        System.out.println(returnFun(99).apply(98)); // 这里t=99, v=98
    }
}
上一篇下一篇

猜你喜欢

热点阅读