Java 8 新特性

2019-08-15  本文已影响0人  可爱的尖椒肉丝
引言

Java 8 带来了很多新的特性,我们今天来聊一下4个接口:Consumer Supplier Predicate Function 这4个接口在实际过程中的用法。

注:在此之前可以了解下 Lambda 表达式相关的内容
消费型接口 Consumer

代码示例 ① 作为接口传入到 forEach 进行消费

public static void main(String[] args) {
        Consumer consumer = new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println("consumer val=" + o);
            }
        };
        List<String> lists = Lists.newArrayList();
        lists.add("test-1");
        lists.add("test-2");
        lists.add("test-3");
        lists.stream().forEach(consumer);
    }
            consumer val=test-1
            consumer val=test-2
            consumer val=test-3

代码示例 ② Lambda 作为 Consumer 传入到 forEach 进行消费

        Consumer<String> consumer1 = (val) -> System.out.println(val);
        lists.stream().forEach(consumer1);

代码示例 ③ 方法引用作为 Consumer 传入 forEach 进行消费

        Consumer<String> consumer2 =  System.out::println;
        lists.stream().forEach(consumer1);
供给型的接口 Supplier

Supplier 内部相当于维护一个容器,可以存储值,之后可以通过supplier.get()获取值。

public static void main(String[] args) {
        Supplier<String> supplier = new Supplier() {
            @Override
            public String get() {
                return "test Supplier";
            }
        };
        System.out.println(supplier.get());
        Supplier<String> supplier1 = () -> "test Supplier 2 ";
        System.out.println(supplier1.get());
}
断言式接口 Predicate

接口Predicate是一个断言式接口,其中实现接口 test 返回 Boolean

public static void main(String[] args) {
        Predicate<Integer> predicate = new Predicate<Integer>() {
            @Override
            public boolean test(Integer o) {
                return 1 < 2;
            }
        };

        System.out.println(predicate.test(1));

        Predicate<Integer> predicate1 = (val) -> val > 1;
        System.out.println(predicate1.test(1));

    }
功能型接口Function

功能型接口:它的一个作用就是转换作用,将输入数据转换成另一种形式的输出数据。

     public static void main(String[] args) {
        Function<String, Integer> function = new Function<String, Integer>() {
            @Override
            public Integer apply(String val) {
                return Integer.valueOf(val);
            }
        };
        System.out.println(function.apply("1"));
    }
上一篇下一篇

猜你喜欢

热点阅读