1 package day14.lesson1;
2
3 import java.util.function.Supplier;
4
5 /*
6 1.4 常用函数式接口之Supplier
7
8 JDK8在java.util.function包中预定义了大量函数式接口
9 重点学习四个:Supplier、Consumer、Predicate、Function
10
11 Supplier接口
12 Supplier<T>接口也被称为生产型接口,
13 如果我们指定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用。
14
15 常用方法
16 只有一个无参的方法
17 T get() 按照某种实现逻辑(由Lambda表达式实现)返回一个数据
18 */
19 public class Demo4Supplier {
20 public static void main(String[] args) {
21 /*String str = getString(() -> {
22 return "输的什么液?想你的夜!";
23 });*/
24 String str = getString(() -> "输的什么液?想你的夜!");
25 System.out.println(str); // 输的什么液?想你的夜!
26
27 Integer i = getInteger(() -> 30);
28 System.out.println(i); // 30
29 }
30
31 // 返回一个整型数据
32 private static Integer getInteger(Supplier<Integer> sup){
33 return sup.get();
34 }
35
36 // 返回一个字符串数据
37 private static String getString(Supplier<String> sup){
38 return sup.get();
39 }
40 }

1 package day14.lesson1;
2
3 import java.util.function.Supplier;
4
5 /*
6 1.5 Supplier案例-获取最大值
7
8 案例需求
9 定义一个类(SupplierTest),在类中提供两个方法
10 一个方法是:int getMax(Supplier sup) 用于返回一个int数组中的最大值
11 一个方法是主方法,在主方法中调用getMax方法
12 */
13 public class Demo5Supplier {
14 public static void main(String[] args) {
15 int[] arr = {19, 5, 20, 37, 49};
16
17 int maxValue = getMax(() -> {
18 int max = arr[0];
19
20 for (int i=1; i<arr.length; i++){
21 if(arr[i] > max){
22 max = arr[i];
23 }
24 }
25
26 return max;
27 });
28
29 System.out.println(maxValue);
30 }
31
32 private static int getMax(Supplier<Integer> sup){
33 return sup.get();
34 }
35 }
