目录1. 背景2. 简介3. 安装方式3.1. 方式1:通过 npm 安装3.2. 方式2:直接下载原代码3.3. 方式3:通过<script>标签引入4. 教程4.1. API简介4.2. 基本使用4.3. 拷贝函数4.4. 指定拷贝深度4.5. 循环引用4.6. 保持类型信息4.7. 拷贝不可枚举的属性4.8. 自定义拷贝规则4.8.1. typeCopyers4.8.1.1. T            
                
         
            
            
            
            ## Java 对象循环引用深拷贝的实现
### 简介
在 Java 开发中,我们经常会遇到需要对对象进行拷贝的情况。通常情况下,我们可以使用浅拷贝来实现对象的拷贝操作,但是当对象中存在循环引用关系时,浅拷贝会导致无限递归的问题。为了解决这个问题,我们需要使用深拷贝来实现对象的拷贝操作。
深拷贝是指将对象及其引用对象的所有属性都复制一份,形成一个新的对象。这样,原对象和拷贝对象之间就不存在任            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-05 15:16:22
                            
                                65阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            基本思路是递归,主要是需要针对不同的数据类型(null, 数组,Date,正则表达式 等)进行精细的处理,并且用WeakMap解决循环引用,避免陷入死循环。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-29 23:47:00
                            
                                75阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、引用拷贝将对象的引用赋值给新的对象,也就是两个变量其实指向的是同一个对象实例。public class Main {
    static class Teacher {
        private String name;
				public Teacher(String name) {
            this.name = name;
        }
        /            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-02-28 20:14:04
                            
                                408阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            Java 实现深拷贝的两种方式概述一、第一种方式,实现 Cloneable接口二、第二种方式,实现Serializable接口 概述在Java中如果想要复制另一个对象,直接使用==只是复制了另一个 对象的地址,修改其中一个对象,另一个对象也会接着改变。想要复制另一个对象的值也就是深拷贝需要使用clone()方法。深拷贝一共有两种方式:一、第一种方式,实现 Cloneable接口创建两个实体类,都            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-02 16:41:20
                            
                                90阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            深浅拷贝&引用拷贝
浅拷贝:在堆上创建一个新的对象,不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是拷贝对象和原对象共用同一个内部对象。
深拷贝:深拷贝会完全赋值整个对象,包括这个对象所包含的内部对象
引用拷贝:引用拷贝就是两个不同的引用指向同一个对象            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-09-03 11:34:50
                            
                                132阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ### Java深拷贝循环依赖
在Java编程中,经常会遇到对象之间的依赖关系。有时候,这些依赖关系会形成一个循环,也就是一个对象依赖于另一个对象,而后者又依赖于前者。这种情况下,如果我们使用浅拷贝来复制对象,很可能会导致循环依赖的问题。为了解决这个问题,我们需要使用深拷贝来复制对象。
#### 浅拷贝和深拷贝的区别
在深入讨论深拷贝循环依赖问题之前,我们先来了解一下浅拷贝和深拷贝的区别。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-10-09 13:55:29
                            
                                107阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            变量的传递: a = 2 a = b 是把b指向的数据给a a和b的地址相同,最终a和b都指向2 浅拷贝: c = 3 d=4 e=[c, d] f=copy.copy(e) e和f的内存地址不同,因为e. f是列表 列表是一个容器,容器也是有地址的 e和f的元素地址是相同的,e和f指向同一元素 深            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2020-07-21 11:06:00
                            
                                314阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            作为一个前端,一定对深拷贝这个名词不陌生,深拷贝是非常重要的。为什么存在深拷贝?深拷贝这个名词的诞生也是有由来的,在JS里,所有的变量类型都可以简单分为基本类型和应用类型。比如 123, 'aaa' 数值和字符串,属于基本类型,它们在进行赋值的时候,可以直接赋值            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-03-25 14:37:24
                            
                                10000+阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="wi            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-05-22 13:45:00
                            
                                82阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            ## Java深拷贝遇到循环依赖的实现
### 1. 简介
在Java中,深拷贝是指创建一个新的对象,然后将原对象的所有非静态字段复制到新对象中。通常,我们可以使用序列化和反序列化的方式来实现深拷贝。然而,当对象之间存在循环依赖关系时,简单的序列化和反序列化会导致栈溢出。
本文将介绍如何实现在Java中深拷贝遇到循环依赖时的解决方案,并提供了代码示例和注释来帮助理解。
### 2. 解决方            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-18 09:46:11
                            
                                44阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            对象相互赋值的一些关系,分别包括:引入的赋值:指向同一个对象,相互之间会影响;对象的浅拷贝:只是浅层的拷贝,内部引入对象时,依然会相互影响;对象的深拷贝:两个对象不再有任何关系,不会相互影响;可以通过JSON.parse来实现深拷贝,但存在以下弊端:这种深拷贝的方式其实对于函数、Symbol等是无法处理的;并且如果存在对象的循环引用,也会报错的;一、简单的深拷贝函数实现自定义深拷贝的基本功能:二、            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-19 16:55:52
                            
                                97阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            此文转载自:https://blog.csdn.net/qq_41065770/article/details/110233082#commentBox 1、场景: 现有一个ShoppingAddDto类和一个ShoppingItemProperty类,ShoppingAddDto类中包含以Shop            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-05-05 15:24:32
                            
                                399阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            微信搜一搜「bigsai」关注这个专注于Java和数据结构与算法的铁铁文章收录在github/bigsai-algorithm欢迎star收藏如果本篇对你有帮助,记得点赞收藏哦!在开发、刷题、面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝。拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的!在对象的拷贝中,很多初学者可能搞不清到底是拷贝了引用还是拷贝了            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                            精选
                                                        
                            2020-12-18 10:30:57
                            
                                10000+阅读
                            
                                                        
                                点赞
                            
                                                                             
                 
                
                             
         
            
            
            
            JS这门语言没有提供深拷贝的内建方法,诸如slice, concat, Object.assign这些方法其实都是对象的浅拷贝,修改深层次引用时就会变更原始数据,这在一些必须使用深拷贝的场景是无法接受的,所以如何实现一个有用又靠谱的深拷贝方法变得至关重要。如果不想搞得太复杂,可以直接使用这个懒汉大法:JSON.parse(JSON.stringify(target)),它的思路很简单,先序列化再反            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-30 23:39:38
                            
                                29阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            引用拷贝引用拷贝: 引用拷贝不会在堆上创建一个新的对象,只 会在栈上生成一个新的引用地址,最终指向依然是堆上的同一个对象。//实体类public class Person{    public String name;//姓名    public int height;//身高    public StringBuilder something;    public String getName(            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                            精选
                                                        
                            2022-11-16 10:33:49
                            
                                216阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            深拷贝与浅拷贝浅拷贝基本介绍对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复制一份给新的对象。对于数据类型是引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递,也就是只是将该成员变量的引用值(内存地址)复制一份给新的对象。因为实际上两个对象的该成员变量都指向同一个实例。在这种情况下,在一个对象中修改该成员变量会影响到另一个对象            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-27 11:47:30
                            
                                422阅读
                            
                                                                             
                 
                
                                
                    