- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java BeanUtils.copyProperties的详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
开发中经常遇到,把父类的属性拷贝到子类中。通常有2种方法: 1、一个一个set 2、用BeanUtils.copyProperties 很显然BeanUtils更加方便,也美观很多。 那么任何情况都能使用BeanUtils么,当然不是。要先了解他.
是浅拷贝。 浅拷贝: 只是调用子对象的set方法,并没有将所有属性拷贝。(也就是说,引用的一个内存地址) 深拷贝: 将子对象的属性也拷贝过去.
如果都是单一的属性,那么不涉及到深拷贝的问题,适合用BeanUtils.
并不绝对,这个要区分考虑: 1、子对象还要改动。 2、子对象不怎么改动。 虽然有子对象,但是子对象并不怎么改动,那么用BeanUtils也是没问题的.
下面用代码说明下。 翠山有个儿子无忌,儿子继承了他的face和height。 但是life应该是自己的。 后来翠山自刎而死,无忌也变成dead状态了。这就是浅拷贝,无忌用的life引用的翠山的life对象.
Father类:
1
2
3
4
5
6
|
@Data
public
class
Father {
private
String face;
// 长相
private
String height;
// 身高
private
Life life;
// 生命
}
|
Life 类:
1
2
3
4
|
@Data
public
class
Life {
private
String status;
}
|
Son类和main方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@Data
public
class
Son
extends
Father{
private
Life life;
public
static
void
main(String[] args) {
Father cuishan =
new
Father();
cuishan.setFace(
"handsome"
);
cuishan.setHeight(
"180"
);
Life cuishanLife =
new
Life();
cuishanLife.setStatus(
"alive"
);
cuishan.setLife(cuishanLife);
Son wuji=
new
Son();
BeanUtils.copyProperties(cuishan,wuji);
// Life wujiLife = wuji.getLife();
// wujiLife.setStatus("alive");
// wuji.setLife(wujiLife);
// cuishanLife.setStatus("dead"); // 翠山后来自刎了
System.out.println(JSON.toJSONString(cuishan));
System.out.println(JSON.toJSONString(wuji));
}
}
|
上面注释出的代码可以如下替换: case1和case2还是受浅拷贝的影响,case3不受。 case1: 翠山自刎,无忌也挂了 。
1
2
3
4
|
// Life wujiLife = wuji.getLife();
// wujiLife.setStatus("alive");
// wuji.setLife(wujiLife);
// cuishanLife.setStatus("dead"); // 翠山后来自刎了
|
case2: 翠山自刎,无忌设置或者,翠山也活了 。
1
2
3
4
|
// cuishanLife.setStatus("dead"); // 翠山后来自刎了
// Life wujiLife = wuji.getLife();
// wujiLife.setStatus("alive");
// wuji.setLife(wujiLife);
|
case3: 翠山和无忌互不影响 。
1
2
3
4
5
|
cuishanLife.setStatus(
"dead"
);
// 翠山自刎了 该行放在上下均可
// 无忌用个新对象 不受翠山影响了
Life wujiLife =
new
Life();
wujiLife.setStatus(
"alive"
);
wuji.setLife(wujiLife);
|
笔者在这个爬过坑。 因为记得有beanutils这个工具,直接import了。 发现有copyProperty和copyProperties。 看了下发现是 dest,src ,于是果断使用,结果发现参数没了.
其实常见的BeanUtils有2个: spring有BeanUtils apache的commons也有BeanUtils.
区别如下:
– | spring的BeanUtils | commons的BeanUtils |
---|---|---|
方法 | copyProperty和copyProperties | copyProperties |
参数 | src ,dest | dest,src |
这2个用哪个都行,但是要注意区别。 因为他们2个的src和dest是正好相反的,要特别留意.
到此这篇关于Java BeanUtils.copyProperties的详解的文章就介绍到这了,更多相关Java BeanUtils.copyProperties内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/enthan809882/article/details/104956537 。
最后此篇关于Java BeanUtils.copyProperties的详解的文章就讲到这里了,如果你想了解更多关于Java BeanUtils.copyProperties的详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
前言 最近项目上要求升级一个工具包 hutool 的版本,以解决安全漏洞问题,这不升级还好,一升级反而捅出了更大的篓子,究竟是怎么回事呢? 事件回顾 我们项目原先使用的 hu
目录 BeanUtils.copyProperties()参数的赋值顺序 BeanUtils.copyProperties初体验,及其参数含义解释
Beanutils.copyProperties()用法及重写提高效率 特别说明本文介绍的是Spring(import org.springframework.beans.BeanUtils)中的
目录 BeanUtils.copyProperties()拷贝id属性失败 部分代码如下 解决方法 BeanUtils.co
java对象复制或拷贝之BeanUtils.copyProperties() 用法,一行语句实现对象间快速复制 即 BeanUtils.copyProperties(源对象, 目标对象); 使用注意事
我有以下类(class): import org.apache.commons.beanutils.BeanUtils; import com.thoughtworks.xstream.XStream
我正在使用 BeanUtils.copyProperties 将一个对象的全部内容复制到从它继承的另一个对象中。 这里是上下文,从中复制值的域对象包含一组自定义类型 Xref 的对象。该自定义类型有一
我正在使用 commons-beanutils 1.8.3 和 Date 属性作为 java.util.Date。 当我尝试将源复制到目标时,它无法复制日期属性。 以下是我之前的问题,但是没有人给我正
我想将一个对象转换为另一个对象,为此我使用 Spring BeanUtils。但是 Bag 类型的属性“foo” (从 Hibernate 发出)被复制到 List 类型的目标对象中没有问题。 使用相
我正在使用 PropertyUtils.copyProperties()通过反射复制对象的属性,它曾经工作得很好。然而最近,它开始无所事事。 它不会抛出异常,但不会复制任何字段。尽管源对象中有非空字段
为了测试这一点,我迅速做出了以下: public class Test { public static void main(String[] args) { try { Employee e
我知道 BeanUtils 可以将单个对象复制到其他对象。 是否可以复制数组列表。 例如: FromBean fromBean = new FromBean("fromBean", "fromBea
我正在尝试将属性从一个 bean 复制到另一个。下面是两个 bean 的签名: 搜索内容: public class SearchContent implements Serializable {
前言 BeanUtils.copyProperties十有八九是你这些年工作中用的很多的其中一个,不管是Apache的还是Spring的。 网上的解释浩如烟海,我这边用一
dto 对象: public class DTOUser implements UserDetails { /** * */ private static final long serialVer
如何关闭 BeanUtils.copyProperties 的日志记录?它会创建过多的日志并妨碍日志文件的可读性。谢谢堆.. 示例代码 BeanUtils.copyProperties(someDat
springframework.beans.BeanUtils 对于复制对象非常有用,我经常使用“ignoreProperties”选项。但是,有时我只想复制特定的对象(基本上,与“忽略属性”相反)。
有没有办法让 BeanUtils 使用 protected setXXX(X x) 方法?或者您知道执行此操作的其他方法吗? 类似于: public class A{ private Stri
我有一个数字数据库字段(SQL Server 2000 中的 numeric(3))允许空值,而空值是我首选的“无值”值。 该字段映射到非原始 java Long Hibernate 中的类: 字段
我已在 的帮助下将一个对象复制到另一个对象中 BeanUtils.CopyProperties(Src,Dest); From : package org.springframework.beans;
我是一名优秀的程序员,十分优秀!