1.Consumer
有参无返回值,例如集合遍历,消费型接口
方法为 void accept(T t)
@Test
public void Consumer() {
List<String> list=new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.forEach((value)->System.out.println(value));
}
2.Supplier:
无参有返回值,供给型接口,举个小例子,例如抽奖要生成一个座位号,但区号不确定,或者说生成方式可以人为控制,也可以用其他规则生成
方法为T get()
@Test
public void Supplier() {
lotteryDraw(()->1);
lotteryDraw(()->24);
lotteryDraw(()->new Random().nextInt(1000));
}
@Test
public void lotteryDraw(java.util.function.Supplier<Integer> supplier) {
System.out.println(supplier.get());
}
3.Function<T, R>
一个参数带返回值,类型可以相同也可以不同
函数意味着x->y相当于映射也就是格式转化,例如将时间对字符串进行加密,但具体使用何种方式并没有定义
方法为R apply(T)
@Test
public void function() {
encode(x->Base64.getEncoder().encode(x.getBytes()).toString());
encode(x->x);
}
@Test
public void encode(Function<String, String> function) {
String password="张三";
System.out.println(function.apply(password));
}
4.Predicate
一个参数返回值为boolean 类型,可以用于进行未知条件的判断
方法为Boolean test(T)
@Test
public void predicate() {
test(x->x>18);
test(x->x<18);
}
@Test
public void test(Predicate<Integer> predicate) {
Integer integer=20;
if(predicate.test(integer)) {
System.out.println("true");
}else {
System.out.println("false");
}
}