美文网首页
Java 8 新特性

Java 8 新特性

作者: 可爱的尖椒肉丝 | 来源:发表于2019-08-15 17:34 被阅读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"));
        }
    

    相关文章

      网友评论

          本文标题:Java 8 新特性

          本文链接:https://www.haomeiwen.com/subject/wwwzjctx.html