java8 函数式接口学习

Function功能型函数式接口

Function接口接收一个参数T,返回一个参数R。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    static int getResult(int value,Function<Integer,Integer> fun){

return fun.apply(value);

}

// andThen value作为fun1的参数,得出的结果再作为fun2的参数
static String getResultAndThen(int value,Function<Integer,Integer> fun1,Function<Integer,String> fun2){
return fun1.andThen(fun2).apply(value);
}

public static void main(String args[]){
// int num = 1;

System.out.println(getResult(1, (x) -> x + 1));


System.out.println(getResultAndThen(1, (x) -> x + 1, (x) -> x + "s"));
}

andThen Function1的结果作为Function2的参数

Consumer消费型函数式接口

Consumer接口,接收一个参数但是无返回值

1
2
3
4
5
6
7
static void consumer(int value, Consumer<Integer> consumer){
consumer.accept(value);
}

public static void main(String args[]){
consumer(1,(x)-> System.out.println(x));
}

说实话,我不知道这个接口干嘛用- -

Predicate断言型函数式接口

Predicate接口接收一个参数,返回一个布尔值

1
2
3
4
5
6
7
static boolean assest(int value, Predicate<Integer> predicate){
return predicate.test(value);
}

public static void main(String args[]){
System.out.println(assest(2, (x) -> x % 2 == 1));
}

Supplier供给型函数式接口

Supplier接口,无参数,返回一个结果

1
2
3
4
5
6
7
static List<?> getBean(Supplier<?> supplier){
return (List<?>) supplier.get();
}

public static void main(String args[]){
System.out.println(getBean(() -> Arrays.asList(new Integer[]{1, 2, 3, 4, 5})));
}

呀,先学个大概吧,实际项目中感觉用不太到- -用到再说吧~就酱!