Java 8 Supplier函数式接口介绍及代码样例

介绍

供应商接口(Supplier Interface)是 Java 8 引入的 java.util.function 包的一部分,用于在 Java 中实现函数式编程。它表示一个函数,该函数不接收任何参数,但会产生一个类型为 T 的值。
T:表示结果的类型
分配给 Supplier 类型对象的 lambda 表达式用于定义其 get(),最终产生一个值。当我们不需要提供任何值并同时获得一个结果时,Supplier 就非常有用。Supplier 接口只包含一个函数:
image

使用方法

案例1:

下面的示例展示了如何使用 Lambda 表达式来使用供应商接口的 get() 方法。

public class SupplierDemo {

    public static void main(String[] args) {
        Supplier < LocalDateTime > supplier = () -> LocalDateTime.now();
        System.out.println(supplier.get());
    }
}
  • 输出:
2024-03-06T09:58:17.135

案例2:

在本例中,我们将创建一个产品列表,并使用供应商接口提供这些产品。
让我们创建一个简单的产品 POJO:

public class Product {
    private int id;
    private String name;
    private float price;

    public Product(int id, String name, float price) {
        super();
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product [id=" + id + ", name=" + name + ", price=" + price + "]";
    }
}
public class SupplierDemo {

    public static void main(String[] args) {
        System.out.println(productSupplier().get());
    }

    private static Supplier<List< Product >> productSupplier() {
        Supplier < List < Product >> productSupplier = () -> {
            List < Product > productsList = new ArrayList< Product >();
            productsList.add(new Product(1, "哇哈哈纯净水", 2));
            productsList.add(new Product(2, "红卫羊油皂", 2f));
            productsList.add(new Product(3, "白象方便面", 3f));
            productsList.add(new Product(4, "南方黑芝麻糊", 3f));
            productsList.add(new Product(5, "华为手机", 6000f));
            return productsList;
        };
        return productSupplier;
    }
}
  • 输出:
[Product [id=1, name=哇哈哈纯净水, price=2.0], Product [id=2, name=红卫羊油皂, price=2.0], Product [id=3, name=白象方便面, price=3.0], Product [id=4, name=南方黑芝麻糊, price=3.0], Product [id=5, name=华为手机, price=6000.0]]
posted @ 2024-03-06 10:05  一锤子技术员  阅读(208)  评论(0编辑  收藏  举报