java浅克隆与深克隆

简介:

概念:俗话就是拷贝一个副本

一般实现:

实现Cloneable 接口重写clone()方法

部分代码


public Object clone() { 
    Object o = null; 
    try { 
        o = (Student) super.clone();// Object中的clone()识别出你要复制的是哪一 
        // 个对象。 
    } catch (CloneNotSupportedException e) { 
        System.out.println(e.toString()); 
    } 
    return o; 
}

 

注意:浅复制不能同时复制引用

 

如果需要复制引用将需要引用的对象也克隆一下做深复制

更好的方法是利用序列化(常说的串行化)来实现深复制(不需要实现Cloneable接口,需要实现Serializable接口)

见部分代码

 

public Object deepClone() throws IOException, OptionalDataException, 
ClassNotFoundException { 
    // 将对象写到流里 
    ByteArrayOutputStream bo = new ByteArrayOutputStream(); 
    ObjectOutputStream oo = new ObjectOutputStream(bo); 
    oo.writeObject(this); 
    // 从流里读出来 
    ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray()); 
    ObjectInputStream oi = new ObjectInputStream(bi); 
    return (oi.readObject()); 
}




本文转自 www19 51CTO博客,原文链接:http://blog.51cto.com/doujh/1932919,如需转载请自行联系原作者
相关文章
|
Java C++
java面试基础 -- 深克隆 & 浅克隆
java面试基础 -- 深克隆 & 浅克隆
196 1
|
Java API
Java中常用API总结(5)—— Object类中的深克隆和浅克隆
不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来;基本数据类型拷贝过来的是具体的数据,引用数据类型拷贝过来的是地址值。在Object类中默认的克隆方式就是浅克隆
414 0
Java中常用API总结(5)—— Object类中的深克隆和浅克隆
|
Java 编译器
Java对象的深克隆与浅克隆(对象复制)(下)
Java对象的深克隆与浅克隆(对象复制)(下)
315 0
Java对象的深克隆与浅克隆(对象复制)(下)
|
Java API
Java对象的深克隆与浅克隆(对象复制)(上)
Java对象的深克隆与浅克隆(对象复制)(上)
260 0
Java对象的深克隆与浅克隆(对象复制)(上)
|
设计模式 Java uml
java设计模式之原型模式-浅克隆与深克隆
定义:原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 ​ 在应用程序中,有些对象比较复杂,其创建过程过于复杂,而且我们又需要频繁的利用该对象,如果这个时候我们按照常规思维new该对象,那么务必会造成资源浪费,这个时候我们就希望可以利用一个已有的对象来不断对他进行复制就好了,这就是编程中的“克隆”。
1323 0
|
Java 设计模式
Java 深克隆&浅克隆
Java 深克隆(DeepClone)与浅克隆(ShallowClone)是原型设计模式的灵魂。 记录结构: --什么是浅克隆? --实现浅克隆 --什么是深克隆? --实现深克隆 需求 Sunny 软件公司 OA 系统支持工作周报的快速克隆,极大提高了工作周报的编写效率,受到员工的一致好评。
1126 0
|
12月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
604 1
|
12月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
528 1
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
521 0