Java 使用返回Supplier的高阶函数, 生成指定对象的List

使用Supplier生成单个指定的对象
getSupplier是返回Supplier<T>的高阶函数, 用以生成指定对象的List, 使用.get()进行调用

public static List<Object> create(Supplier<Object> supplier) {
    Supplier<List<Object>> resultsupplier = getSupplier(supplier);
    return resultsupplier.get();
}

private static Supplier<List<Object>> getSupplier(Supplier<Object> supplier) {
    return () -> {
        List<Object> result = new ArrayList<>();
        IntStream.range(0, 10).forEach(i -> result.add(judgeThenGet(i, supplier)));
        return result;
    };
}

//判断不同的生成类型做不同的事情
private static Object judgeThenGet(int i, Supplier<Object> supplier) {
    if (supplier.get().getClass() == String.class) {
        return ((String) supplier.get()) + i;
    } else if (supplier.get().getClass() == Random.class) {
        return ((Random) supplier.get()).nextInt();
    }
    return supplier.get();
}

public static List<Object> createObjects() {
    return create(Object::new);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值