JAVA 集合+对象复制工具类

import jakarta.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Consumer;
public class BeanUtil extends cn.hutool.core.bean.BeanUtil {
@Nullable
public static <S, T> T copyProperties(S source, Class<T> tClass, BiFunction<S, T, T> function) {
T t = copyProperties(source, tClass);
if (t != null && function != null) {
t = function.apply(source, t);
}
return t;
}
public static <S, T> T copyProperties(S source, Class<T> tClass, @Nullable Consumer<T> consumer) {
T t = copyProperties(source, tClass);
if (t != null && consumer != null) {
consumer.accept(t);
}
return t;
}
public static <S, T> List<T> copyList(List<S> sources, Class<T> tClass) {
return copyList(sources, tClass, result -> {
});
}
public static <S, T> List<T> copyList(List<S> sources, Class<T> tClass, @Nullable Consumer<T> consumer) {
return copyList(sources, tClass, (src, target) -> {
if (consumer != null) {
consumer.accept(target);
}
return target;
});
}
public static <S, T> List<T> copyList(@Nullable List<S> sources, Class<T> tClass, BiFunction<S, T, T> function) {
if (sources == null) {
return null;
}
if (sources.isEmpty()) {
return new ArrayList<>();
}
List<T> list = new ArrayList<>(sources.size());
sources.forEach(src -> {
T t = copyProperties(src, tClass, function);
list.add(t);
});
return list;
}
}