提交 cafa69af authored 作者: liupengfei's avatar liupengfei

--no commit message

上级 47dffe58
...@@ -5,6 +5,7 @@ import java.util.ArrayList; ...@@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -31,12 +32,26 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{ ...@@ -31,12 +32,26 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{
* 拷贝对象 * 拷贝对象
* @param source 拷贝源 * @param source 拷贝源
* @param clazz 目标对象类 * @param clazz 目标对象类
* @param consumer (VO) -> void 复制对象后 执行程序
* @return
* @author lpf
* @date: 2019年2月19日 下午4:57:19
*/
public static <R, VO> VO copy(R source, Class<VO> clazz, Consumer<VO> consumer) {
VO vo = copy(source, clazz);
consumer.accept(vo);
return vo;
}
/**
* 拷贝对象
* @param source 拷贝源
* @param clazz 目标对象类
* @param biConSumer (R,VO) -> void 复制对象后 执行程序 * @param biConSumer (R,VO) -> void 复制对象后 执行程序
* @return * @return
* @author lpf * @author lpf
* @date: 2019年2月19日 下午5:16:23 * @date: 2019年2月19日 下午5:16:23
*/ */
public static <R, VO> VO copy(R source, Class<VO> clazz, BiConsumer<R, VO> biConSumer) { public static <R, VO> VO copy(R source, Class<VO> clazz, BiConsumer<R, VO> biConsumer) {
VO vo = null; VO vo = null;
try { try {
vo = BeanUtils.instantiate(clazz); vo = BeanUtils.instantiate(clazz);
...@@ -45,7 +60,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{ ...@@ -45,7 +60,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{
e.printStackTrace(); e.printStackTrace();
throw new BaseException("复制对象时创建对象失败,source:"+ source, e); throw new BaseException("复制对象时创建对象失败,source:"+ source, e);
} }
biConSumer.accept(source, vo); biConsumer.accept(source, vo);
return vo; return vo;
} }
/** /**
...@@ -56,20 +71,48 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{ ...@@ -56,20 +71,48 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{
* @author lpf * @author lpf
*/ */
public static <R, VO> List<VO> copyList(List<R> list, Class<VO> clazz) { public static <R, VO> List<VO> copyList(List<R> list, Class<VO> clazz) {
return copyList(list, clazz, (r,vo) ->{}, (R r) -> true); return copyList(list, clazz, (r,vo) ->{});
} }
/** /**
* 过滤批量复制对象 * 过滤批量复制对象
* @param list * @param list
* @param clazz * @param clazz
* @param BiConsumer (VO) -> void 复制对象后 执行程序
* @param filter
* @return
* @author lpf
*/
@SafeVarargs
public static <R, VO> List<VO> copyList(List<R> list, Class<VO> clazz, Consumer<VO> consumer, Predicate<R>... filter) {
Stream<R> stream = list.stream();
for (Predicate<R> predicate : filter) {
stream = stream.filter(predicate);
}
return stream.map(obj -> {
try {
VO vo = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(obj, vo);
consumer.accept(vo);
return vo;
} catch (BeanInstantiationException e) {
e.printStackTrace();
throw new BaseException("批量复制对象时创建对象失败。");
}
}).collect(Collectors.toList());
}
/**
* 过滤批量复制对象
* @param list
* @param clazz
* @param BiConsumer (R,VO) -> void 复制对象后 执行程序 * @param BiConsumer (R,VO) -> void 复制对象后 执行程序
* @param filter * @param filter
* @return * @return
* @author lpf * @author lpf
*/ */
@SafeVarargs @SafeVarargs
public static <R, VO> List<VO> copyList(List<R> list, Class<VO> clazz, BiConsumer<R, VO> biConSumer, Predicate<R>... filter) { public static <R, VO> List<VO> copyList(List<R> list, Class<VO> clazz, BiConsumer<R, VO> biConsumer, Predicate<R>... filter) {
Stream<R> stream = list.stream(); Stream<R> stream = list.stream();
for (Predicate<R> predicate : filter) { for (Predicate<R> predicate : filter) {
stream = stream.filter(predicate); stream = stream.filter(predicate);
...@@ -78,7 +121,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{ ...@@ -78,7 +121,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{
try { try {
VO vo = BeanUtils.instantiate(clazz); VO vo = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(obj, vo); BeanUtils.copyProperties(obj, vo);
biConSumer.accept(obj, vo); biConsumer.accept(obj, vo);
return vo; return vo;
} catch (BeanInstantiationException e) { } catch (BeanInstantiationException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -86,7 +129,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{ ...@@ -86,7 +129,7 @@ public class BeanUtils extends org.springframework.beans.BeanUtils{
} }
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
/** /**
* 获取包括父类在内的所有属性 * 获取包括父类在内的所有属性
* @param clazz * @param clazz
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论