java 8 中的 function 类 属于 lamda表达式的一种,它定义好了一些接口,可以直接来调用,比较方便。
若不使用 java 自带的 function 类,在定义好接口后,再用 lamda 表达式来表达 functional interface 中的函数。
举例:
import java.util.function.Function; import java.util.function.Predicate; public class HelloWorld { // functional interface @FunctionalInterface interface StringMapper{ int map(String str); } public static void main(String[] args){ StringMapper mapper=(String str)->str.length(); System.out.println(mapper.map("chen")); // Function <T, R> Function<Integer,Integer> square1=(x)->x*x; System.out.println(square1.apply(5)); // chaining three functions Function<Long, Long> chainedFunction = ((Function<Long, Long>)(x -> x * x)) .andThen(x -> x + 1) .andThen(x -> x * x); System.out.println(chainedFunction.apply(3L)); // predictates Predicate<Integer> greaterThanTen=x->x>10; System.out.println(greaterThanTen.test(15)); } }
输出:
4
25
100
true