最近函数式编程很火,大家都开始各种用lambda表达式。我们如何让别人也在我们自己写的类里面用lambda表达式呢?换句话说,我们要造一个输入lambda表达式的成员函数,或者静态函数,怎么办?其实仔细分析,大多数调用lambda表达式,都是基于原来的固定接口Function、Predicate和Comsumer(如foreach接口),那么我们相应调用就好。
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
public class 函数式编程 {
static int[]
list={1,2,3,4,5,6,7,8,9,10};
public static void
输出函数1到10的值(Function<Integer, Double>
f){
for(int i:list){
System.out.println(i+"
"+f.apply(i)+"
");
}
}
public static void
判断(Predicate<Integer> p){
for(int i:list){
System.out.println(i+"
"+(p.test(i)?"true":"false"));
}
}
public static void
取列表的东西做某些事(Consumer<Integer>
c){
for(int i:list){
c.accept(i);
}
}
}
|
之后我们就可以在函数体里面这么用啦:
函数式编程.输出函数1到10的值(
(a)->
((double)(a*a))/5+((double)a)/3
);
函数式编程.判断(
(p)-> p%2==1
);
函数式编程.取列表的东西做某些事((i)->{
System.out.println("输出i=="+i);
});
|