Tag Archives: Consumer

Java内置的几个函数式接口的基本使用

  1. 相关类:SupplierConsumerPredicateFunction
  2. 什么是函数式接口

    • 有且只有一个抽象方法的接口被称作函数式接口
    • 函数式接口可以直接写成Lambda表达式
    • 函数式接口还可以写成方法引用的方式
    • 函数式接口对外展示的是一个规范,只需要满足这种规范即可成为其实现
    • 函数式接口可以类比为多态在函数式结构上的实现
    package com.yusian.function;
    
    import java.util.function.Supplier;
    
    /**
    * Supplier是一个函数式接口,返回任意类型数据,是一个容器
    * 他是对所有无参并返回一个对象的结构抽象,一切无参并返回对象的方法都可以成为他的实现
    * 这使得编程变得更加开放,可以想像是多态在函数式编程方式上的实现
    */
    public class SupplierDemo {
    
       public static void main(String[] args) {
           // 1、匿名内部类
           Supplier<Person> sup1 = new Supplier<Person>() {
               @Override
               public Person get() {
                   return new Person();
               }
           };
           Person p1 = sup1.get();
    
           // 2、Lambda表达式
           Supplier<Person> sup2 = () -> new Person();
           Person p2 = sup2.get();
    
           // 3、方法引用
           Supplier<Person> sup3 = Person::new;
           Person p3 = sup3.get();
    
           // 4、本地方法模拟
           Person p4 = supplier();
    
           // 5、只要满足函数式结构就可以
           Supplier<Person> sup5 = SupplierDemo::supplier;
           Person p5 = sup5.get();
    
           System.out.println(p1);
           System.out.println(p2);
           System.out.println(p3);
           System.out.println(p4);
           System.out.println(p5);
       }
    
       /**
        * 获取一个Person实例对象
        * @return Person
        */
       public static Person supplier() {
           return new Person();
       }
    }
    

    [……]

    继续阅读