首页后端开发JAVAJava对象指定部分/全部属性copy工具类

Java对象指定部分/全部属性copy工具类

时间2023-04-12 21:36:01发布访客分类JAVA浏览811
导读:要将部分属性从一个Java对象复制到另一个对象,可以使用一个实用程序类和一个利用反射复制指定字段的方法。以下是一个示例实现:public class ObjectCopier { public static void copyFie...

要将部分属性从一个Java对象复制到另一个对象,可以使用一个实用程序类和一个利用反射复制指定字段的方法。以下是一个示例实现:

public class ObjectCopier {

    public static void copyFields(Object source, Object destination, String... fields) throws IllegalAccessException {
    
        Class?>
     sourceClass = source.getClass();
    
        Class?>
     destinationClass = destination.getClass();


        for (String field : fields) {
    
            Field sourceField = null;

            try {
    
                sourceField = sourceClass.getDeclaredField(field);

            }
 catch (NoSuchFieldException e) {
    
                // Ignore fields that don't exist in the source object
                continue;

            }
    
            Field destinationField = null;

            try {
    
                destinationField = destinationClass.getDeclaredField(field);

            }
 catch (NoSuchFieldException e) {
    
                // Ignore fields that don't exist in the destination object
                continue;

            }
    

            sourceField.setAccessible(true);
    
            destinationField.setAccessible(true);
    
            destinationField.set(destination, sourceField.get(source));

        }

    }

}

测试

@Data
public class User {
    

    private String warehouseCode;
    


    private String warehouseName;
    


    private Integer  deductType;
    


    private String  deductOrderCode;
    


    private BigDecimal deductAmount;

}



@Data
public class User2 {
    

    private String warehouseCode;
    


    private String warehouseName;
    

    private Integer  deductType;


    public static void main(String[] args) throws IllegalAccessException {
    
        User2 user2 = new User2();
    
        user2.setWarehouseCode("code");
    
        user2.setWarehouseName("name");
    
        user2.setDeductType(111);
    
        User user = new User();
    
        ObjectCopier.copyFields(user2,user,"warehouseCode","warehouseName");
    
        System.out.println(user);

    }

}
    

测试结果

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

java

若转载请注明出处: Java对象指定部分/全部属性copy工具类
本文地址: https://pptw.com/jishu/2731.html
有点狠有点猛,我用责任链模式重构了业务代码 将时间戳转换为天,时,分

游客 回复需填写必要信息