BeanUtils如何优雅的拷贝List
生活随笔
收集整理的這篇文章主要介紹了
BeanUtils如何优雅的拷贝List
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一步到位springboot目錄
gitee:https://gitee.com/chaitou/leilema.git
前言
BeanUtils.copyProperties();確實為我們做了很多事情,雖然不能完美完成深拷貝,但是對于po、vo、dto的拷貝已經足夠用了。但是其還是有一些不夠完美的地方
不足:
因此我們決定通過集成BeanUtils類,自己造一個方便用的輪子。
使用
我們將新創建一個輪子BeanConvertUtils,使用如下
代碼
/*** 轉換對象工具** @author bugpool*/ public class BeanConvertUtils extends BeanUtils {public static <S, T> T convertTo(S source, Supplier<T> targetSupplier) {return convertTo(source, targetSupplier, null);}/*** 轉換對象** @param source 源對象* @param targetSupplier 目標對象供應方* @param callBack 回調方法* @param <S> 源對象類型* @param <T> 目標對象類型* @return 目標對象*/public static <S, T> T convertTo(S source, Supplier<T> targetSupplier, ConvertCallBack<S, T> callBack) {if (null == source || null == targetSupplier) {return null;}T target = targetSupplier.get();copyProperties(source, target);if (callBack != null) {callBack.callBack(source, target);}return target;}public static <S, T> List<T> convertListTo(List<S> sources, Supplier<T> targetSupplier) {return convertListTo(sources, targetSupplier, null);}/*** 轉換對象** @param sources 源對象list* @param targetSupplier 目標對象供應方* @param callBack 回調方法* @param <S> 源對象類型* @param <T> 目標對象類型* @return 目標對象list*/public static <S, T> List<T> convertListTo(List<S> sources, Supplier<T> targetSupplier, ConvertCallBack<S, T> callBack) {if (null == sources || null == targetSupplier) {return null;}List<T> list = new ArrayList<>(sources.size());for (S source : sources) {T target = targetSupplier.get();copyProperties(source, target);if (callBack != null) {callBack.callBack(source, target);}list.add(target);}return list;}/*** 回調接口** @param <S> 源對象類型* @param <T> 目標對象類型*/@FunctionalInterfacepublic interface ConvertCallBack<S, T> {void callBack(S t, T s);} }性能
由于只是BeanUtils的一個封裝,跟原來的代碼性能幾乎差不多,如果要說差一點也沒錯,畢竟多了一層函數堆棧的調用,但是基本可以忽略不計。主要的性能還是由BeanUtils決定。
提醒
不知道大家對這個BeanConvertUtils工具類感覺怎么樣,自己在項目中倒是大量使用,也很方便。但是有兩點要提醒
總結
以上是生活随笔為你收集整理的BeanUtils如何优雅的拷贝List的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Random和ThreadLocalRa
- 下一篇: 服务停止端口未释放_工信部出手!对通信短