Spring的copy属性

news2024/11/15 11:11:51

Spring 的 BeanUtils.copyProperties()实现的是浅拷贝

ClassA

public class ClassA {
    private Integer age;
    private String name;
    private ClassC c;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ClassC getC() {
        return c;
    }

    public void setC(ClassC c) {
        this.c = c;
    }

    @Override
    public String toString() {
        return "ClassA{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", c=" + c +
                '}';
    }
}

ClassB

public class ClassB {
    private Integer age;
    private String name;
    private String other;
    private ClassC d;
    private ClassD c;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOther() {
        return other;
    }

    public void setOther(String other) {
        this.other = other;
    }

    public ClassD getC() {
        return c;
    }

    public void setC(ClassD c) {
        this.c = c;
    }


    public ClassC getD() {
        return d;
    }

    public void setD(ClassC d) {
        this.d = d;
    }

    @Override
    public String toString() {
        return "ClassB{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", other='" + other + '\'' +
                ", c=" + c +
                ", d=" + d +
                '}';
    }
}

ClassC

public class ClassC {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "ClassC{" +
                "name='" + name + '\'' +
                '}';
    }
}

ClassD

public class ClassD {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "ClassD{" +
                "name='" + name + '\'' +
                '}';
    }
}

main

    public static void main(String[] args) {
        ClassA a=new ClassA();
        a.setAge(10);
        a.setName("A");
        ClassC c=new ClassC();
        c.setName("C");
        a.setC(c);

        ClassB b=new ClassB();
        b.setAge(111);
        b.setName("B");
        ClassC c1=new ClassC();
        c1.setName("C1");
        b.setD(c1);
        ClassD d=new ClassD();
        d.setName("D");
        b.setC(d);
        System.out.println("我是改变前的a"+a);
        System.out.println("我是改变前的b"+b);
        System.out.println("我是改变前的c"+c);
        BeanUtils.copyProperties(a,b);
        System.out.println("我是改变后的a"+a);
        System.out.println("我是改变后的b"+b);
        System.out.println("我是改变后的c"+c);

    }

结果
在这里插入图片描述
b只复制和a属性类型相同的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1463920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【stm32】hal库-双通道ADC采集

【stm32】hal库-双通道ADC采集 CubeMX图形化配置 程序编写 /* USER CODE BEGIN PV */ #define BATCH_DATA_LEN 1 uint32_t dmaDataBuffer[BATCH_DATA_LEN]; /* USER CODE END PV *//* USER CODE BEGIN 2 */lcd_init();lcd_show_str(10, 10, 24, "Demo14_4:ADC1 ADC2 S…

vue大文件读取部分内容,避免重复加载大文件,造成流量浪费

使用场景:项目点云地图是pcd文件,但是文件可能上百兆,我需要获取到文件中的版本信息,跟本地的缓存文件做比较,如果不一致,才会加载整个文件。从而节省流量。 避免重复加载整个“.pcd文件,以最大…

2.21数据与结构算法学习日记(最小生成树prim算法)

目录 最小生成树prim 最小生成树算法是一种用来在一个加权连通图中找到最小生成树的算法。最小生成树是一个包含图中所有顶点的树,其总权值最小。 prim算法 洛谷题目示例 P3366 【模板】最小生成树 题目描述 输入格式 输出格式 输入输出样例 说明/提示 题…

郑板桥的人生境界是难得糊涂

郑板桥是康熙秀才,雍正举人,乾隆进士。 郑板桥小时候跟父亲在真州读书,长大后在真州教书。后来,郑板桥去扬州卖画谋生。 郑板桥没有老师,画画靠自己琢磨。郑板桥一生画竹,画了四十年的竹子,主…

【析】考虑同时取送和时间窗的车辆路径及求解算法

期刊:computer engineering and applications 计算机工程与应用![c 引言 1. 问题分析 1.1 问题描述 问题描述为: 若干运输车辆从配送中心出发为客户取送货并最终返回配送中心,每位客户仅由一辆车服务一次,车辆在配送过程中任…

《图解设计模式》笔记(二)交给子类

三、Template Method模式:将具体处理交给子类 示例程序类图 public static void main(String[] args) {// 生成一个持有H的CharDisplay类的实例AbstractDisplay d1 new CharDisplay(H);// 生成一个持有"Hello, world."的StringDisplay类的实例AbstractD…

11-树-二叉树的前序遍历

这是树的第11篇算法,力扣链接。 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 做了这么久的树问题,现在开始回忆三种遍历方法,这篇文章…

C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试

1、A-3E报文回顾 1、存储区分类及访问规则 2、命令类型 命令由主命令子命令组成 3、报文结构 2、启动mc服务器 3、创建VS项目 这节继续使用上节的VS2022的项目,增加一个方法 MCTestA3E(),具体怎么创建项目,见上节的过程。C#上位机与三菱…

Spring Security学习(六)——配置多个Provider(存在两种认证规则)

前言 《Spring Security学习(五)——账号密码的存取》一文已经能满足一般应用的情况。但实际商业应用也会存在如下的情况:用户提交的账号密码,能在本地的保存的账号密码匹配上,或者能在远端服务认证中匹配上&#xff…

171基于matlab的随机共振微弱信号检测

基于matlab的随机共振微弱信号检测,随机共振描述了过阻尼布朗粒子受周期性信号和随机噪声的共同作用下,在非线性双稳态系统中所发生的跃迁现象. 随机共振可用于弱信号的检测。程序已调通,可直接运行。

Linux用到的命令

1 压缩文件 tar -czf wonderful.tar.gz pm 这个命令的作用就是创建一个以.tar.gz结尾的包文件,然后调用gzip程序将当前目录下的pm文件夹压缩到这个以.tar.gz结尾的文件里面去

Colmap学习笔记(一):Pixelwise View Selection for Unstructured Multi-View Stereo论文阅读

1. 摘要 本文展示一套MVS系统,该系统利用非结构化的图片实现鲁棒且稠密的建模。本文的主要贡献是深度和法向量的联合估计,用光度和几何先验进行像素筛选,多视图几何一致项,该项同时进行精修和基于图片的深度和法向量的融合。在标…

C2-1.6 Dropout正则化——提高泛化能力

C2-1.6 Dropout正则化——提高泛化能力 1、参考书籍 2、什么是Dropout正则化 以图一为例: 假设在训练图一所示的神经网络,它存在过拟合(模型过于复杂情况),dropout 会遍历网络的每一层(每一层设置的阈值不…

StarRocks加速查询——低基数全局字典

前言 StarRocks-2.0引入了低基数全局字典,可以通过全局字典将字符串的相关操作转换成整型相关操作,极大提升了查询性能。StarRocks 2.0后的版本默认会开启低基数字典优化。 一、低基数字典 对于利用整型替代字符串进行处理,通常使用字典编码…

Docker之查看并获取最新Ubuntu镜像(十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

在vue3中使用canvas实现雨滴效果

在vue3中使用canvas实现雨滴效果 这是封装的一个组件DotAndRain&#xff08; &#xff09; <script setup> import { ref, onMounted } from "vue"; import { onUnmounted } from "vue";let animationFrameId null;const el ref(null); let canv…

Java零基础 - 赋值运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

redis入门指南

文章目录 Redis概述Redis基本数据类型Redis与MySQL的区别以及使用场景如何保持双写一致性&#xff08;缓存一致性&#xff09;1. 延迟双删2. 分布式锁&#xff08;强一致性时使用&#xff09;3. 中间件 Redis持久化机制RDB&#xff08;redis database&#xff09;AOF&#xff0…

Python算法100例-1.10 数制转换

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.字符与数字进行转换6.其他数制转换成十进制7.十进制转换成其他数制8.完整的程序 1&#xff0e;问题描述 给定一个M进制的数x&#xff0c;实现对x向任意一个非M进制…

SwiftUI 集合视图(Grid)拖放交换 Cell 的极简实现

概览 自从 SwiftUI 横空出世那天起&#xff0c;小伙伴们都感受到了它惊人的简单与便捷。而在本课中&#xff0c;我们将会用一个小“栗子”更直观的让大家体验到它无与伦比简洁的描述性特质&#xff1a; 如上图所示&#xff0c;我们在 SwiftUI 中实现了 Grid 中拖放交换 Cell 的…