美文网首页
对象属性拷贝效率优化

对象属性拷贝效率优化

作者: ivms8200 | 来源:发表于2020-05-27 15:34 被阅读0次

参考你还在用BeanUtils进行对象属性拷贝?

import org.springframework.cglib.beans.BeanCopier;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 封装属性拷贝工具类
 */
public class BeanCopierUtil {
    private static final Map<String, BeanCopier> BEAN_COPIER_CACHE_MAP = new ConcurrentHashMap<>();

    public static void copy(Object source, Object target) {
        BeanCopier copier = getBeanCopier(source.getClass(), target.getClass());
        copier.copy(source, target, null);
    }

    private static BeanCopier getBeanCopier(Class sourceClass, Class targetClass) {
        String cacheKey = generateKey(sourceClass, targetClass);
        BeanCopier copier;
        if (!BEAN_COPIER_CACHE_MAP.containsKey(cacheKey)) {
            copier = BeanCopier.create(sourceClass, targetClass, false);
            BEAN_COPIER_CACHE_MAP.put(cacheKey, copier);
        } else {
            copier = BEAN_COPIER_CACHE_MAP.get(cacheKey);
        }
        return copier;
    }

    private static String generateKey(Class<?> class1, Class<?> class2) {
        return class1.toString() +"_"+ class2.toString();
    }

}

相关文章

  • 对象属性拷贝效率优化

    参考你还在用BeanUtils进行对象属性拷贝?

  • 15.深浅拷贝

    浅拷贝:就是当被拷贝的对象的某个属性值为引用类型时,拷贝的对象会将被拷贝的对象的这个属性的引用的地址拷贝过来,这样...

  • JAVA设计模式:原型模式与拷贝

    深拷贝与浅拷贝 浅拷贝:对象A进行赋值操作得到对象B,这就是浅拷贝,修改对象A的属性会影响到B的属性 深拷贝:深拷...

  • 深拷贝和浅拷贝

    什么是深拷贝和浅拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的...

  • 深浅拷贝

    深浅拷贝的定义 浅拷贝 创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基...

  • 面试题:Strong和Copy的区别

    什么是浅拷贝和深拷贝 浅拷贝:并不拷贝对象本身,只是对指向对象的指针进行拷贝,改变原对象的属性会影响新的对象,内存...

  • 继承和函数进阶

    对象之间的继承 (对象拷贝) 使用for...in结构进行遍历拷贝属性,子级对象已经有的属性就无需再继承父级对象的...

  • 9、深拷贝与浅拷贝

    1.浅拷贝 1.1 浅拷贝解释   创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,...

  • 属性值为对象时

    若一个对象的属性值为对象,则该属性的属性值引用了一个对象。 x是解构赋值的对象,解构赋值为浅拷贝,拷贝形成的对象与...

  • 浅拷贝和深拷贝

    copy的特点: 修改源对象的属性和行为,不会影响副本对象修改副本对象的属性和行为,不会影响源对象 浅拷贝只拷贝了...

网友评论

      本文标题:对象属性拷贝效率优化

      本文链接:https://www.haomeiwen.com/subject/sbiwahtx.html