You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已实例化对象创建Java Supplier以生成新实例?

从已实例化Java对象创建Supplier的便捷方案

如果你需要基于已存在的实例创建Supplier(每次调用get()都返回同一个实例),可以用以下几种便捷方式:

1. 直接使用Lambda表达式(JDK原生,无依赖)

这是最直接的JDK原生写法,无需引入任何第三方库:

CustomObject customObject = new CustomObject();
Supplier<CustomObject> supplier = () -> customObject;

每次调用supplier.get()都会返回你预先实例化好的customObject实例。

2. 借助Guava库的工具方法(若项目已引入Guava)

如果你的项目已经使用了Guava库,可以用它提供的Suppliers.ofInstance()方法,语义更清晰:

CustomObject customObject = new CustomObject();
Supplier<CustomObject> supplier = Suppliers.ofInstance(customObject);

该方法内部逻辑和Lambda写法完全一致,只是封装成了工具方法,代码更简洁。

3. 自定义工具方法(无第三方依赖,复用性强)

如果不想引入Guava,也可以自己封装一个静态工具类,实现类似你设想的Supplier.of()功能:

public class SupplierUtils {
    // 封装返回固定实例的Supplier创建逻辑
    public static <T> Supplier<T> ofInstance(T instance) {
        return () -> instance;
    }
}

使用时直接调用工具方法:

CustomObject customObject = new CustomObject();
Supplier<CustomObject> supplier = SupplierUtils.ofInstance(customObject);

注意区分

要注意和你提到的创建新实例的Supplier区分开:

  • () -> new CustomObject() 或 CustomObject::new 每次调用get()都会生成一个新的CustomObject实例,不符合你基于已有实例的需求。

内容的提问来源于stack exchange,提问作者mullair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 11:47:43