java对象拷贝

简介: java对象拷贝

对象拷贝

作用:

  •    提升对象创建的效率。

分类:

  •   浅拷贝:拷贝对象时,String、基本类信息变量属性复制,引用对象不复制。
  •   深拷贝:拷贝对象时,所偶有属性都赋值一份。

实现方式:

  •   通过clone方法实现。浅拷贝只要拷贝对象实现Cloneable接口并重写clone方法即可;深拷贝需要所有属性对象都实现Cloneable接口并重写clone方法,同时拷贝对象在重写clone方法时要通过拷贝的方式对引用属性赋值。
// 所有属性对象均要实现clone接口,并重写clone方法
public Object clone() throws CloneNotSupportedException { 
 Study s = (Study) super.clone(); 
 s.setScore(this.score.clone()); //  引用对象需要用克隆的方式赋值
 return s; 
}
  •  序列化克隆,属于深拷贝。
Student stu1 = new Student("宁采臣",a,174);
//通过序列化方法实现深拷贝
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(stu1);
oos.flush();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
Student stu2 = (Student)ois.readObject();

BeanUtils.copyProperties(a,c);这是采用反射实现的,属于浅拷贝。

 

相关文章
|
9天前
|
存储 安全 Java
小白聊《JAVA编程思想》-一切都是对象(一)
小白聊《JAVA编程思想》-一切都是对象(一)
8 0
|
3天前
|
Java 数据安全/隐私保护
Java中的类与对象详解
Java中的类与对象详解
|
3天前
|
Java
Java中的对象克隆详解
Java中的对象克隆详解
|
3天前
|
存储 Java 开发者
Java中的对象序列化详解
Java中的对象序列化详解
|
5天前
|
安全 Java
JAVA反射:如何在运行时“创造”你的对象?
【7月更文挑战第1天】Java反射机制允许在运行时动态创建对象,常用于插件系统和框架开发。与`new`关键字相比,反射提供更大的灵活性,能根据条件决定对象类型,但牺牲了性能和代码可读性。示例展示了如何通过`Class.forName()`和`Constructor.newInstance()`创建对象,过程中需处理异常。反射还可访问私有成员,增加安全风险,故使用时需谨慎。
9 2
|
5天前
|
Java
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
Java面向对象 ( 类与对象 | 构造方法 | 方法的重载 )
|
8天前
|
JSON Java fastjson
老程序员分享:java对象转json
老程序员分享:java对象转json
14 3
|
9天前
|
设计模式 缓存 Java
Java设计模式:享元模式实现高效对象共享与内存优化(十一)
Java设计模式:享元模式实现高效对象共享与内存优化(十一)
|
1天前
|
Java 数据安全/隐私保护
Java中的类与对象详解
Java中的类与对象详解
|
2天前
|
存储 Java
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD