使用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);
}