zoukankan      html  css  js  c++  java
  • Java中简单对象(数组)拷贝

    1. 直接使用 Springframework 下的工具 BeanUtils 可以进行简单对象的复制拷贝,具体使用方式如下:

    类A的信息:

    import lombok.Data;
    import lombok.ToString;
    
    @Data
    public class ClassA {
        private String name;
        private String email;
        private Integer age;
    }

    类B的信息:

    import lombok.Data;
    import lombok.ToString;
    
    @Data
    @ToString
    public class ClassB {
        private String name;
        private String email;
    }

    测试对象拷贝的案例:

    import org.springframework.beans.BeanUtils;
    
    public class TestAB {
        public static void main(String[] args) {
            ClassA classA = new ClassA();
            classA.setAge(1);
            classA.setEmail("test@qq.com");
            classA.setName("test A");
    
            ClassB classB = new ClassB();
            BeanUtils.copyProperties(classA, classB, ClassB.class);
            System.out.println(classB);
        }
    }

    输出结果:

    ClassB(name=test A, email=test@qq.com)

    2. 如果是对数组进行复制拷贝,则需要写一个 ListBeanUtils 工具类,如下所示:

    import java.util.List;
    import java.util.Objects;
    
    public class ListBeanUtils<T> {
        public void copyList(Object obj, List<T> list2, Class<T> classObj) {
            if ((!Objects.isNull(obj)) && (!Objects.isNull(list2))) {
                List list1 = (List) obj;
                list1.forEach(item -> {
                    try {
                        T data = classObj.newInstance();
                        BeanUtils.copyProperties(item, data);
                        list2.add(data);
                    } catch (InstantiationException e) {
                    } catch (IllegalAccessException e) {
                    }
                });
            }
        }
    }

    测试数组拷贝的案例:

    import org.springframework.beans.BeanUtils;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class TestAB {
        public static void main(String[] args) {
            ClassA classA = new ClassA();
            classA.setAge(1);
            classA.setEmail("test@qq.com");
            classA.setName("test A");
    
            ClassA classA1 = new ClassA();
            classA1.setAge(12);
            classA1.setEmail("test2@qq.com");
            classA1.setName("test A2");
    
    
            List<ClassA> aList = new ArrayList<>();
            aList.add(classA);
            aList.add(classA1);
    
            List<ClassB> bList = new ArrayList<>();
            ListBeanUtils<ClassB> utils = BeanUtils.instantiateClass(ListBeanUtils.class);
            utils.copyList(aList, bList, ClassB.class);
    
            System.out.println(bList);
        }
    }

    输出结果:

    [ClassB(name=test A, email=test@qq.com), ClassB(name=test A2, email=test2@qq.com)]
  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/miaoying/p/14804551.html
Copyright © 2011-2022 走看看