supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new,看下面代码:
package com.hikktn.jdk8.function;import java.util.function.Supplier;/*** 用于进行值操作* @author 12134**/public class MySupplierDemo {public static Integer getMin(Supplier<Integer> supplier) {return supplier.get();}public static void main(String[] args) {// 创建数组int[] arr = { 100, 20, 50, 30, 99, 101, -50 };// 求最小值Integer result = getMin(() -> {int min = arr[0];for (int i : arr) {if (i < min) {min = i;}}return min;});System.out.println(result);}}
结果
-50
public class TestSupplier {private int age;TestSupplier(){System.out.println(age);}public static void main(String[] args) {//创建Supplier容器,声明为TestSupplier类型,此时并不会调用对象的构造方法,即不会创建对象Supplier<TestSupplier> sup= TestSupplier::new;System.out.println("--------");//调用get()方法,此时会调用对象的构造方法,即获得到真正对象sup.get();//每次get都会调用构造方法,即获取的对象不同sup.get();}}
结果:
--------00
1.supplier是个接口,有一个get()方法
2.语法 :
Supplier<TestSupplier> sup= TestSupplier::new;
3.每次调用get()方法时都会调用构造方法创建一个新对象。
