`
JackAndroid
  • 浏览: 136239 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java类浅复制和深复制

阅读更多

    java类浅复制和深复制的区别在于:浅复制时,类内属性为基本类型则直接复制相应值,如果是对象则复制其实例引用(复制对象和新对象中的引用指向同一对象);而深复制则会完全新建完全新的对象属性。

    如果希望java类能进行复制操作,则该类必须实现cloneable接口(该接口是一个标识接口,clone()方法声明在Object类)。

1.浅复制代码

 

 public Object clone(){
    try {    
              return super.clone();    
          } catch (CloneNotSupportedException e) {    
            return null;    
         }    
    }    

 2.深复制代码

    深复制的过程相对复杂,要求其类内的属性都必须实现Serializable接口支持序列化

 

public Object clone(){    
    
        try {    
    
            ByteArrayOutputStream ot = new ByteArrayOutputStream();    
    
            ObjectOutputStream oo = new ObjectOutputStream(ot);    
    
            oo.writeObject(this);    
    
            ByteArrayInputStream it = new ByteArrayInputStream(ot.toByteArray());    
    
            ObjectInputStream oi = new ObjectInputStream(it);    
    
            return (oi.readObject());    
    
        } catch (IOException e) {    
            e.printStackTrace();    
            return null;    
        } catch (ClassNotFoundException e) {    
            e.printStackTrace();    
            return null;    
        }    
    
    }  
分享到:
评论

相关推荐

    android 浅复制和深复制-Java Generic Deep Copy 篇

    本文将深入探讨Java中的浅复制和深复制,并以Android为背景,结合具体的实例讲解如何实现Java泛型深拷贝。 首先,我们要理解浅复制和深复制的概念。浅复制(Shallow Copy)是指创建一个新的对象,然后将原对象引用...

    java List 深度复制方法

    如果元素是不可变的(如String、Integer等包装类),那么浅复制和深复制并无太大差异,因为这些对象一旦创建就无法改变。但对于可变对象(如自定义类实例),我们需要通过序列化和反序列化,或者手动创建新对象并...

    java的深复制与浅复制

    Java提供了两种基本的对象复制方式:浅复制(Shallow Copy)和深复制(Deep Copy)。这两种复制方式各有特点,适用于不同的场景。 #### 二、浅复制(Shallow Copy) 浅复制是指在创建一个新对象时,该对象的属性值...

    java深复制浅复制的实现源代码

    本篇文章将深入探讨Java中的深复制和浅复制概念,并通过源代码示例进行详细解析。 首先,我们理解一下深复制和浅复制的区别: 1. **浅复制(Shallow Copy)**:浅复制只是复制了对象的引用,而不是对象本身。这...

    JAVA中浅复制与深复制

    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。

    android 浅复制和深复制实例

    浅复制和深复制是两种主要的复制方式,它们在处理复杂数据结构时扮演着重要角色。本文将深入探讨这两种复制方式,并通过实例来帮助理解。 ### 1. 浅复制(Shallow Copy) 浅复制是指创建一个新对象,然后将原对象...

    Java深复制与浅复制&Clone

    在Java编程语言中,对象复制是一个常见的操作,...理解并正确使用浅复制和深复制对于开发高效、健壮的Java应用程序至关重要。在处理复杂的数据结构时,应根据需求选择合适的复制策略,以避免不必要的副作用和数据污染。

    Java深复制与浅复制.doc

    总结来说,Java中的浅复制和深复制是根据对象中引用类型字段的处理方式区分的。浅复制只复制对象的表面数据,而深复制则确保创建一个完全独立的副本,包括所有嵌套的对象。在实际开发中,选择哪种复制方式取决于具体...

    Java中对象的深复制和浅复制详解.doc

    对象复制分为两种主要类型:浅复制(浅克隆)和深复制(深克隆)。理解这两种复制方式的区别对于优化程序性能和避免意外数据更改至关重要。 1. **浅复制(浅克隆)** 浅复制是指创建一个新对象,该对象拥有原始...

    Java中的深拷贝(深复制)和浅拷贝(浅复制) 示例代码

    为了理解深拷贝(深复制)和浅拷贝(浅复制),我们需要首先了解Java对象内存的分配方式以及引用的概念。 1. **对象复制的基础** 在Java中,当我们创建一个对象时,系统会在内存中为该对象分配一块空间,存储它的...

    Java中的深拷贝(深复制)和浅拷贝(浅复制)介绍

    在Java编程语言中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是两种不同的对象复制方式,它们涉及到内存中数据的复制和引用的处理。理解这两种拷贝方式对于开发过程中正确管理和操作对象至关重要。 浅拷贝,又...

    Java 浅复制和深复制的实例详解

    Java 浅复制和深复制的实例详解 Java 中的浅复制和深复制是两种不同的复制方式,它们之间有着本质的区别。在本文中,我们将通过实例详解的方式来介绍 Java 浅复制和深复制的区别和应用场景。 一、浅复制 浅复制是...

    java深度复制源代码

    在Java中,对象的复制分为浅复制和深度复制两种。浅复制是指创建一个新的对象,并将原对象的非引用类型的字段值复制到新对象中;对于引用类型的字段,只是复制了引用地址,即新旧对象共享同一份数据。而深度复制则是...

    java不同对象及集合的多次复制

    - **Dozer库**:允许使用注解来定义复制规则,支持深度复制和类型转换,可以实现不同对象间的复制。 - **ModelMapper库**:提供了`ModelMapper`类,可以通过配置注解自动映射对象,简化了复制过程。 4. **集合与...

    java 深度拷贝 复制 深度复制.zip

    在Java编程中,深度拷贝和浅拷贝是两种重要的对象复制方式,它们涉及到对象的内存管理和内存结构的复制。本篇文章将详细讲解如何利用Java的反射机制实现深度拷贝,以及这种方式的优点和注意事项。 首先,理解深度...

    理解java中的深复制和浅复制

    在Java编程中,深复制和浅复制是两个重要的概念,主要涉及到对象的复制与克隆。这两个术语在处理对象的拷贝时具有不同的含义,理解它们对于编写高效且无误的代码至关重要。 首先,让我们来看一下浅复制(Shallow ...

    java不同对象之间及集合的复制

    在Java中,如果类的属性都是基本类型,可以通过构造函数或克隆方法实现浅复制。但如果属性包含引用类型,就需要深复制以确保新对象拥有独立的引用。 3. **注解实现复制**: 注解是一种元数据,可以提供编译时或运行...

    java 深克隆浅克隆

    Java提供了两种主要的克隆方式:深克隆和浅克隆。 1. 浅克隆(Shallow Clone): 浅克隆是通过调用对象的`clone()`方法来实现的,这个方法是Object类提供的。当一个对象被浅克隆时,新创建的对象将拥有原始对象的...

    Java对象深复制与浅复制实例详解

    Java对象深复制与浅复制实例详解 Java对象深复制与浅复制是Java编程中两个重要的概念,它们都是对象复制的方式,但它们有着不同的实现机制和应用场景。在本文中,我们将详细介绍Java对象深复制与浅复制的概念、实现...

    31.3、深复制和浅复制clone1

    在编程领域,尤其是在Java语言中,深复制和浅复制是两个重要的概念,它们与对象的复制行为密切相关。这里我们将深入探讨这两个概念,并通过实例来解释它们的区别。 首先,让我们了解基本数据类型的复制。在Java中,...

Global site tag (gtag.js) - Google Analytics