Java Supplier用法

@Test
    public void testSupplier(){
        String str = "str";
        String result = process(() -> {
            StringJoiner ccc = new StringJoiner("|").add(str).add("ccc");
            User user = new User();
            user.setName(ccc.toString());
            return user;
        });
        System.out.println(result);
    }

    private String process(Supplier<? extends Person> supplier){
        return supplier.get().toString()+":"+"finished";
    }

Supplier接口:

 * @param <T> the type of results supplied by this supplier
 *
 * @since 1.8
 */
@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

短短几行代码,可以把supplier用法说清楚了

1. Supplier是一个函数式接口,里面就一个方法 get();

2. get() 方法有返回值,返回Supplier的接收参数类型T

3. Supplier的意思是在程序的上层提供一个方法,传递到下游来供下游的程序使用,比如上面的例子里上游程序在process方法里提供一个方法,然后下游process方法的实现里可以获取该方法的结果,并且可以处理过后再返回给上游

Supplier是Java 8引入的函数式接口,它定义了一个不接受任何参数但返回一个结果的方法`get()`。它常用于延迟执行或惰性计算,即只有在需要时才会执行,并且可以多次获取结果。

以下是一些适合使用Supplier的场景:

1. 延迟加载:当需要一个对象时,但是创建代价较高或不确定是否需要时,可以使用Supplier来延迟加载。只有当需要获取结果时,才会执行Supplier的`get()`方法来创建对象。

2. 惰性计算:当某个计算量较大的操作只需在需要结果时执行一次时,可以使用Supplier来进行惰性计算。只有当需要获取结果时,才会执行Supplier的`get()`方法来执行计算并返回结果。

3. 循环使用:在一些需要多次获取结果的场景,可以使用Supplier来循环提供结果。每次调用Supplier的`get()`方法都会重新计算并返回一个结果。

4. 配置获取:当需要动态获取配置信息或参数时,可以使用Supplier来获取。每次调用Supplier的`get()`方法都可以返回最新的配置信息或参数值。

5. 通用设置:当下游服务需要接收多种类型的数据的时候,可以在下游服务参数使用supplier,然后在上游调用的时候提供具体的数据

总的来说,使用Supplier可以实现一种按需获取结果或延迟执行操作的模式,适用于在需要时才执行计算、创建对象或获取配置的场景。它提供了一种灵活且可复用的方式来处理延迟加载和惰性计算的需求。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micrle_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值