美文网首页
Java8之函数式接口

Java8之函数式接口

作者: jeffrey_hjf | 来源:发表于2022-11-02 10:56 被阅读0次

    函数式接口:

    1. 接口中有且仅有一个抽象方法,
    2. 可以存在多个非抽象方法,例如上述的默认方法和静态方法;
    3. 可以用@FunctionalInterface 注解进行修饰;
    4. 可以隐式转化为lambda表达式。

    2.四大函数式接口

    • Function 函数式接口

    有一个输入,有一个输出。里面存在抽象方法:R apply(T t);

    代码体验

    /**
    * @Description:输入一个数求平方
    * @Author: yz
    * @Version: 1.0.0
    * @Date: 2022/7/22
    */
    @Test
    public void test2() {
        //匿名内部类
        Function function = new Function<Integer, Integer>() {
            @Override
            public Integer apply(Integer n) {
                return n * n;
            }
        };
        System.out.println(function.apply(12));
     
     
        //lambda表达式
        Function<Integer, Integer> func = (n) -> n * n;
        System.out.println(func.apply(12));
    }
    
    • Supplier供给型函数

    无参输入,有参输出。里面存在抽象方法:T get();

    代码体验

    /**
    * @Description:输出10以内的整数和
    * @Author: yz
    * @Version: 1.0.0
    * @Date: 2022/7/22
    */
    @Test
    public void test3() {
        //匿名内部类
        Supplier supplier = new Supplier<Integer>() {
     
     
            @Override
            public Integer get() {
                int sum = 0;
                for (int i = 0; i < 10; i++) {
                    sum += i;
                }
                return sum;
            }
        };
        System.out.println(supplier.get());
     
     
        //lambda表达式
        Supplier sup = () -> {
            int sum = 0;
            for (int i = 0; i < 10; i++) {
                sum += i;
            }
            return sum;
        };
        System.out.println(sup.get());
     
    }
    
    • Consumer 消费型接口

    接收一个参数,无输出 。里面存在抽象方法:void accept(T t);

    代码体验

    /**
    * @Description:true输出1否则为0
    * @Author: yz
    * @Version: 1.0.0
    * @Date: 2022/7/22
    */
    @Test
    public void test4() {
        //匿名内部类
        Consumer<Boolean> consumer = new Consumer<Boolean>() {
            @Override
            public void accept(Boolean s) {
                System.out.println(s==true?1:0);
            }
        };
      consumer.accept(false);
     
     
        //lambda表达式
        Consumer<Boolean> consu = t -> System.out.println(t==true?1:0);
        consu.accept(false);
    }
    
    • Predicate 断言型函数

    接收一个类型T的参数,给出判断结果。里面存在抽象方法:boolean test(T t);

    代码体验

    /**
    * @Description:判断字符串是否为空
    * @Author: yz
    * @Version: 1.0.0
    * @Date: 2022/7/22
    */
    @Test
    public void test1() {
        //匿名内部类
        Predicate predicate = new Predicate<String>() {
            @Override
            public boolean test(String o) {
                return o.isEmpty();
            }
        };
        System.out.println(predicate.test("222"));
     
     
        //lambda表达式
        Predicate<String> pre = (str) -> str.isEmpty();
        System.out.println(pre.test("222"));
    }
    

    相关文章

      网友评论

          本文标题:Java8之函数式接口

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