Java 对象拷贝方式
(1)BeanUtils.cloneBean()使用:
http://www.cnblogs.com/fervour/archive/2009/12/18/1627868.html
package com.test; import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test; public class CloneTest3 {
@Test
public void testClone() throws Exception {
Teacher sir = new Teacher("sir1");
Student3 c = new Student3(1, sir); Student3 c2 = (Student3) BeanUtils.cloneBean(c); System.out.println(c.getSir() == c2.getSir());
System.out.println(c == c2); c.getSir().setName("xx");
System.out.println("clone is not deep");
System.out.println(c.getSir().getName() + "," + c2.getSir().getName());
System.out.println("------------------------testclone---end");
} @Test
public void testClone2() throws Exception {
Teacher sir = new Teacher("sir1");
Student3 c = new Student3(1, sir); Teacher sir2 = (Teacher) BeanUtils.cloneBean(c.getSir());
Student3 c2 = new Student3();
BeanUtils.copyProperties(c2, c);
c2.setSir(sir2); System.out.println(c == c2);
System.out.println(c.getSir() == c2.getSir());
c.getSir().setName("xx");
System.out.println(c2.getSir().getName() + "," + c.getSir().getName());
System.out.println("clone is deep");
System.out.println("------------------------testclone2---end");
}
}
package com.test; public class Student3 {
private int num;
private Teacher sir; public Student3(int num, Teacher sir) {
super();
this.num = num;
this.sir = sir;
} public Student3() {
} public int getNum() {
return num;
} public void setNum(int num) {
this.num = num;
} public Teacher getSir() {
return sir;
} public void setSir(Teacher sir) {
this.sir = sir;
}
}
package com.test; public class Teacher {
private String name; public Teacher(String name) {
super();
this.name = name;
} public Teacher() {
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
(2)深拷贝和浅拷贝:
http://www.cnblogs.com/mengdd/archive/2013/02/20/2917971.html
(3)反序列化漏洞,针对类实现Serializable接口并定义方法readObject
http://sec.chinabyte.com/435/13618435.shtml
Java 对象拷贝方式的更多相关文章
- Java对象表示方式2:XStream实现对对象的XML化
上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象.总结一下这种对象表示方式的优缺点: 1.纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持 ...
- Java对象表示方式1:序列化、反序列化和transient关键字的作用
平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态.一 ...
- java对象表示方式--XStream
对象表示有各种各样的方式,序列化只是其中的一种而已.表示一个对象的目的无非就是为了对象<---->IO之间相互认识,至于怎么认识,那就有很多选择了.除了之前讲过的序列化,还可以选择将数据J ...
- JAVA对象实例化方式总结
JAVA对象实例化的方法 New对象实例 // 直接new对象实例 Productor productor = new Productor(); 反射机制 Java反射机制是在运行状态中,对于任意一个 ...
- Java对象拷贝备忘
列举 //cglib net.sf.cglib.beans.BeanCopier.create net.sf.cglib.beans.BeanCopier.copy //spring-beans or ...
- JAVA 对象拷贝
1.java里的clone分为: A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍. Java中对 ...
- java对象拷贝和复制
参考文章:http://blog.csdn.net/XIAXIA__/article/details/41652057 解决问题:深拷贝.浅拷贝 和普通的对象赋值有什么区别? 对象复制 例如:Pers ...
- Java对象表示方式1:序列化、反序列化的作用
1.序列化是的作用和用途 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存 ...
- Java文件拷贝方式
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444284.html 利用java.io类库,直接为源文件构建一个FileInputStream读取 ...
随机推荐
- oracle创建用户
--首先用管理员的帐户登录(要有修改用户的权限)system,默认数据库orcl. CREATE USER lcs IDENTIFIED BY lcs default tablespace lics_ ...
- eclipse安装genymotion插件
1.打开eclipse,在界面上点击"Help"按钮,在弹出来的下拉菜单中选择"Install New Software..."选项.系统弹出"Ins ...
- HTML 简单的介绍
Q: 什么是HTML? A: HTML 是一种超文本标记语言. 所谓的超文本是指指页面内可以包含图片,链接,甚至音乐.程序等非文字元素.超文本标记语言的结构包括"头"部分(英语:H ...
- 同步异步,阻塞非阻塞 和nginx的IO模型
同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication).所谓同步,就是在发出一个*调用*时,在没有得 ...
- javascript推荐书籍
本文转载自http://www.cnblogs.com/zfc2201/archive/2012/07/22/2604236.html感谢作者 WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没 ...
- iOS开发多线程篇 — GCD的常见用法
一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) withObject:nil ...
- js通过location.search来获取页面传来的参数
这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 ? 1 2 3 4 5 function GetQueryString(name) { var ...
- 哈,我自己翻译的小书,马上就完成了,是讲用python处理大数据框架hadoop,spark的
花了一些时间, 但感觉很值得. Big Data, MapReduce, Hadoop, and Spark with Python Master Big Data Analytics and Dat ...
- 微软的R语言发行版本MRO及开发工具RTVS
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:微软在收购R语言的开发商后,也独立发行或在自己的产品中集成了R语言,这里就介绍下它们包 ...
- github入门教程
1.下载git windows 客户端 https://git-for-windows.github.io/ 2.配置github 安装windows客户端以后,在里面输入如下命令 首先在本地创建ss ...