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();
}
}
结果:
--------
0
0
1.supplier是个接口,有一个get()方法
2.语法 :
Supplier<TestSupplier> sup= TestSupplier::new;
3.每次调用get()方法时都会调用构造方法创建一个新对象。