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读取 ...
随机推荐
- 分布式应用下的Redis单机锁设计与实现
背景 最近写了一个定时任务,期望是同一时间只有一台机器运行即可.因为是应用是在集群环境下跑的,所以需要自己实现类一个简陋的Redis单机锁. 原理 主要是使用了Redis的SET NX特性,成功设置的 ...
- 通过goto语句学习if...else、switch语句并简单优化
goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...
- 启动apache和tomcat端口被占用解决办法
1,打开控制台,使用命令 netstat -aon|findstr 8090 找出端口被占用的进程, 2,使用 taskkill -f -pid 4116(进程id)杀掉当前占用端口的进程
- ecshop二次开发常用文件位置
语言包修改: /language/zh_cn/admin/common.php 商品详情页模板: /themes/**/goods.dwt (最下方有changePrice() 点选属性或改变数量时 ...
- WPF CollectionViewSource CollectionView
CollectionView 通俗讲就是可以对你绑定的集合可以进行 分组,排序 等功能 CollectionViewSource 根据字面意思是xxx的数据源 详细的介绍还是看 http://www ...
- 15.django之Django-Rest-Framework
1.首先安装Django-Rest-Framework pip3 install djangorestframework pip3 install markdown Markdown为可视化 API ...
- Select标签下拉列表二级联动级联
首先从服务器端,绑定下拉列表,二级下拉的text命名按照一定规则加上一级下拉的ID. var options=new Array(); $(document).ready(function(){ // ...
- .NET LINQ概述
LINQ 语言集成查询 (LINQ) 是 Visual Studio 2008 中引入的一组功能,它在对象领域和数据领域之间架起了一座桥梁.可为 C# 和 Visual Basic 语言语法 ...
- C#的XML序列化及反序列化
webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...
- 异或之(bzoj 3689)
Description 给定n个非负整数A[1], A[2], --, A[n].对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A[i] xor A[j],这 ...