文档章节

模拟出来的对象拷贝,支持List

bosslovezz
 bosslovezz
发布于 2015/07/23 16:51
字数 181
阅读 11
收藏 0
    /**
     * 对象拷贝
     *
     * @param oldObj
     *            原对象
     * @param objClass
     *            对象类
     * @return 新对象
     * @throws Exception
     *             例外
     */
    @SuppressWarnings("unchecked")
    public static <T> T copyObjToNew(T oldObj, Class<?> objClass) throws Exception {

        if (oldObj == null) {
            return null;
        }

        if (oldObj.getClass() != objClass) {
            return null;
        }

        T newObj = (T) objClass.newInstance();

        Field[] fields = oldObj.getClass().getDeclaredFields();

        if (fields == null || fields.length == 0) {
            return null;
        }

        for (Field objField : fields) {

            objField.setAccessible(true);

            String fieldName = objField.getName();

            String fieldValue = String.valueOf(objField.get(oldObj));

            if (fieldValue == null || "".equals(fieldValue)) {
                continue;
            }

            Field newField = newObj.getClass().getDeclaredField(fieldName);

            newField.setAccessible(true);

            newField.set(newObj, fieldValue);
        }

        return (T) newObj;
    }

    /**
     * List对象拷贝
     *
     * @param oldObjList
     *            原List
     * @param objClass
     *            对象类
     * @return 新做成List
     * @throws Exception
     *             例外
     */
    public static <T> List<T> copyObjToNew(List<T> oldObjList, Class<?> objClass) throws Exception {

        List<T> listInfo = new ArrayList<T>();
        if (oldObjList == null || oldObjList.size() == 0) {
            return null;
        }

        for (T obj : oldObjList) {
            T newObj = copyObjToNew(obj, obj.getClass());
            if (newObj == null) {
                continue;
            }else{
                listInfo.add(newObj);
            }
        }

        return listInfo;
    }


© 著作权归作者所有

bosslovezz
粉丝 6
博文 29
码字总数 9527
作品 0
杭州
程序员
私信 提问
通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典

在本系列的前面两篇文章(《简单类型+复杂类型》、《数组》)我们通过创建的实例程序模拟了ASP.NET MVC默认使用的DefaultModelBinder对简单类型、复杂类型以及数组对象的Model绑定。现在我们...

长平狐
2012/09/04
306
0
ArrayList 源码分析 -- 扩容问题及序列化问题

目录 一、前言 二、ArrayList 的继承与实现关系 2.1 ArrayList.java 2.2 抽象类AbstractList.java 2.3 接口List.java 2.4 接口RandomAccess.java 2.5 接口Cloneable 2.6 接口Serializable 三......

niaonao
2018/08/16
0
0
【设计模式】原型模式 Pototype Parttern

前面讲了创建一个对象实例的方法单例模式Singleton Parttern, 创造多个产品的工厂模式(简单工厂模式 Simple Factory Pattern, 工厂方法模式 FactoryMothed Parttern,抽象工厂模式 Abstra...

风之源
2018/08/06
0
0
随机模拟 java 数据插件 - Jmockdata

Jmockdata ![License](http://www.apache.o

寻觅一只耳朵
2017/01/05
10.9K
27
通过实例模拟ASP.NET MVC的Model绑定机制:数组

[续《通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型]》]基于数组和集合类型的Model绑定机制比较类似,对于绑定参数类型或者参数类型的某个属性为数组或者集合,如果ValueProv...

长平狐
2012/09/04
683
0

没有更多内容

加载失败,请刷新页面

加载更多

Echars鼠标点击事件多次触发

本文转载于:专业的前端网站➭Echars鼠标点击事件多次触发 gChart.on('click', function (params) { if (params.componentSubType == "bar" && params.componentType == "serie......

前端老手
14分钟前
3
0
springboot2.0.6(附) 解析META-INF/spring.factories通过系统加载类获取对应的 class 的全限定名称

在 SpringBoot中是通过getSpringFactoriesInstances(Class<T> type)方法获取所有classpath下面的META-INF/spring.factories文件,然后根据type值找到对应的 class 的全限定名称列表。下面我来...

小亮89
16分钟前
3
0
zk工厂方法实现NIOServerCnxnFactory

NIOServerCnxnFactory类 内部类 AbstractSelectThread AcceptThread SelectorThread 属性 ZOOKEEPER_NIO_SESSIONLESS_CNXN_TIMEOUT 10s session过期时间 ZOOKEEPER_NIO_NUM_SELECTOR_THREADS......

writeademo
19分钟前
3
0
天猫精灵业务如何使用机器学习PAI进行模型推理优化

作者:如切,悟双,楚哲,晓祥,旭林 引言 天猫精灵(TmallGenie)是阿里巴巴人工智能实验室(Alibaba A.I.Labs)于2017年7月5日发布的AI智能语音终端设备。天猫精灵目前是全球销量第三、中国...

阿里云官方博客
27分钟前
5
0
BJL技巧之大路馆擦法—《利辰逸》

很多朋友刚玩百佳时间不长,不知道如何看路,今 天我就来简单的讲下看大路的方法。 都是前辈教的,这里我只是简单复述一下。 大路的观察方法有以下几种: 先从庄闲的数量变化说起。 庄闲的强...

那女孩对我说
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部