目录
一、函数式接口
1、概念
2、格式
3、@FunctionalInterface注解
4、自定义函数式接口
二、函数式编程
1、 Lambda的延迟执行
2、使用Lambda作为参数和返回值
三、常用函数式接口
1、Supplier接口
package com.dzg.functionaliter;
import java.util.function.Supplier;
public class TestSupplier {
public static String getString(Supplier<String> supplier){
return supplier.get();
}
public static int getMaxInt(Supplier<Integer> supplier){
return supplier.get();
}
public static void main(String[] args) {
String msgA = "GF";
String msgB = "who?";
System.out.println(getString(()-> msgA+msgB));
int[] arrays = {23,45,6,3,1,6,7};
int maxNum = getMaxInt(()-> {
int max = 0;
for (int i = 0; i < arrays.length; i++) {
if (arrays[i] > max) {
max = arrays[i];
}
}
return max;
});
System.out.println(maxNum);
}
}
2、Consumer接口
public class TestConsumer {
public static void consumSth(Consumer<String> fun){
fun.accept("consumed by consumer");
}
public static void consumeString(Consumer<String> consumer1,Consumer<String> consumer2){
consumer1.andThen(consumer2).accept("and then ?");
}
public static void main(String[] args) {
consumSth(s -> System.out.println(s));
consumeString(
s -> {
System.out.println(s.toUpperCase());
},
t -> {
System.out.println(t.toLowerCase());
}
);
}
}
3、Predicate接口
4、Function接口