lambda表达式四大核心接口

  • 时间:
  • 来源:互联网
  • 文章标签:

java8为我们在不同场景下更灵活的使用lambda表达式,为我们预制了四大核心接口。

接口特征

  • Consumer<T>:消费者接口,无返回值。
  • Supplier<T>:生产者接口,有返回值。
  • Function<T,R>:函数式接口,有入参有返回值。
  • Function<T,R>:断言式接口,返回值为boolean。

1、Consumer<T>:消费性接口

void accept(T t)

/**
     * 消费性接口:无返回值
     */
    @Test
    public void testConsumer(){
        happy(1000D ,m-> System.out.println("锻炼身体,花费"+m));
    }

    public void happy(Double money,Consumer<Double> consumer){
        consumer.accept(money);
    }

在这里插入图片描述

2、Supplier<T>:共给性接口

T get();

@Test
    public void testSupplier(){
        List<Integer> list = getList(10, () -> (int) (Math.random() * 100));
        for (Integer integer : list) {
            System.out.println(integer);
        }
    }
    public List<Integer> getList(int num, Supplier<Integer> supplier){
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            list.add(supplier.get());
        }
        return list;
    }

在这里插入图片描述

Function<T,R>:函数性接口

R apply(T t);

@Test
    public void testFunction(){
        String str = getStr("mhsabluknsdkicnin", s -> s.substring(1, 10));
        System.out.println(str);
    }

    public String getStr(String s, Function<String,String> function){
        return function.apply(s);
    }

在这里插入图片描述

Predicate<T>:断言性接口

boolean test(T t);

@Test
    public void testPredicate(){
        boolean aTrue = isTrue(18, integer -> integer > 0);
        System.out.println(aTrue);
    }
    public boolean isTrue(Integer i, Predicate<Integer> predicate){
        return predicate.test(i);
    }

在这里插入图片描述

本文链接http://www.taodudu.cc/news/show-2450902.html