(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;
}
}

下载相关jar包

(2)深拷贝和浅拷贝:

http://www.cnblogs.com/mengdd/archive/2013/02/20/2917971.html

(3)反序列化漏洞,针对类实现Serializable接口并定义方法readObject

http://sec.chinabyte.com/435/13618435.shtml

Java 对象拷贝方式的更多相关文章

  1. Java对象表示方式2:XStream实现对对象的XML化

    上一篇文章讲到了使用Java原生的序列化的方式来表示一个对象.总结一下这种对象表示方式的优缺点: 1.纯粹的Java环境下这种方式可以很好地工作,因为它是Java自带的,也不需要第三方的Jar包的支持 ...

  2. Java对象表示方式1:序列化、反序列化和transient关键字的作用

    平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态.一 ...

  3. java对象表示方式--XStream

    对象表示有各种各样的方式,序列化只是其中的一种而已.表示一个对象的目的无非就是为了对象<---->IO之间相互认识,至于怎么认识,那就有很多选择了.除了之前讲过的序列化,还可以选择将数据J ...

  4. JAVA对象实例化方式总结

    JAVA对象实例化的方法 New对象实例 // 直接new对象实例 Productor productor = new Productor(); 反射机制 Java反射机制是在运行状态中,对于任意一个 ...

  5. Java对象拷贝备忘

    列举 //cglib net.sf.cglib.beans.BeanCopier.create net.sf.cglib.beans.BeanCopier.copy //spring-beans or ...

  6. JAVA 对象拷贝

    1.java里的clone分为:  A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象.  b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍.  Java中对 ...

  7. java对象拷贝和复制

    参考文章:http://blog.csdn.net/XIAXIA__/article/details/41652057 解决问题:深拷贝.浅拷贝 和普通的对象赋值有什么区别? 对象复制 例如:Pers ...

  8. Java对象表示方式1:序列化、反序列化的作用

    1.序列化是的作用和用途 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存 ...

  9. Java文件拷贝方式

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11444284.html 利用java.io类库,直接为源文件构建一个FileInputStream读取 ...

随机推荐

  1. codevs1540 银河英雄传说

    描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶集 ...

  2. 只用@property定义一个属性speed,子类不能直接用_speed,需要在interface的成员变量列表里写上_speed

    //写法一: @interface Person : NSObject { } @property (nonatomic, strong) NSString *name; @end @implemen ...

  3. XML-->DTD&Schema Notes

     The need for XML “schemas” •Unlike any other data format, XML is totally flexible, elements can be ...

  4. UI第十节——UISwitch

    - (void)viewDidLoad {    [super viewDidLoad];        // 实例化UISwitch,固定大小    UISwitch *swc = [[UISwit ...

  5. /etc/rc.d/rc与/etc/rc.d/init.d的关系

    在这里先解释一下 /etc/rc.d/init.d 里面放的都是什么东西.这个目录存放的是一些脚本,一般是Linux以rpm包安装时设定的一些服务的启动/关闭脚本.系统在安装时装了好多rpm包,这里面 ...

  6. JAVA设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  7. 支持向量机SVM

    SVM(Support Vector Machine)有监督的机器学习方法,可以做分类也可以做回归.SVM把分类问题转化为寻找分类平面的问题,并通过最大化分类边界点距离分类平面的距离来实现分类. 有好 ...

  8. ps批量处理图片

    刚刚有朋友问,ps咋做批量动作呢,其实特别简单,基本一劳永逸,用尺寸做个例子,大家看看就知道了.

  9. nginx实现请求转发

    反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...

  10. 【GoLang】golang 中 defer 参数的蹊跷

    参考资料: http://studygolang.com/articles/7994--Defer函数调用参数的求值 golang的闭包和普通函数调用区别:http://studygolang.com ...