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
}
}