首页 > 编程语言 >java - 实体类里浅拷贝 与 深拷贝

java - 实体类里浅拷贝 与 深拷贝

时间:2022-09-07 17:58:22浏览次数:81  
标签:实体类 java ERR TreeData children new 拷贝 td

1.背景

 

 因为存在集合类 ,因此引出了浅拷贝与深拷贝,

浅拷贝无法将  List<TreeData>  这样的指定栈堆 的类型字段 new一个新的地址,需要使用深拷贝才能解决

2.浅拷贝

  @Note("克隆对象")
    public TreeData cloneTd() {
        TreeData td = null;
        try {
            td = (TreeData) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new CustomResultException(ResultEn.ENTITY_CLONE_ERR.getCode(), ResultEn.ENTITY_CLONE_ERR.getMessage()
                    + ":" + ExcBox.getExcMsg(e));
        }
        if (null == td) throw new CustomResultException(ResultEn.ENTITY_CLONE_ERR);
        return td;
    }

3.深拷贝

    @Note("克隆对象")
    public TreeData cloneTd() {
        TreeData td = new TreeData(planGid, pGid, name, valu, isObj, level, sort, vueType, enums, isMust,
                isInherit, isOCR, isMulFile, lcTm, null);
        List<TreeData> children = new ArrayList<>();
        System.arraycopy(this.children, 0, children, 0, children.size());
        td.setChildren(children);
        return td;
    }

仍然有缺点,只能深入到实体里的第一个  List<TreeData> children  

3.深拷贝解决

要么使用递归一层一层克隆,要么使用json转换处理,都会开辟新的栈堆

 

标签:实体类,java,ERR,TreeData,children,new,拷贝,td
From: https://www.cnblogs.com/c2g5201314/p/16666644.html

相关文章

  • Description Resource Path Location Type Java compiler level does not match t
    问题:DescriptionResourcePathLocationTypeJavacompilerleveldoesnotmatcht今天在自己项目中整合HBaseAPI的时候遇到了这个问题,想了半天也不知道自己干了什么......
  • java并发编程之CompletionService(转载)
    如果我有一个任务想要异步执行,可以使用CompletableFuture,那如果我有多个任务呢,想要并发执行或者串行执行,又想要快速拿到异步执行的结果。那推荐你使用ExecutorCompletion......
  • javascript 过滤字符串中script并且替换掉 xss注入攻击+js调试
    最近发现网上找答案也是80%类似结果。js调试可以在浏览器里,f10,f11可以比较准确。functionscriptReplace(str){if(newRegExp(".*?script[^>]*?.*?(<\/.*?sc......
  • 【JAVA UI】【HarmonyOS】 鸿蒙setBindStateChangedListener的基本使用
    ​ 参数讲解setBindStateChangedListener(Component.BindStateChangedListener)方法说明:该组件是否添加到窗口的组件树上示例findComponentById(ResourceTable.Id_te......
  • Java 基础三、接口与内部类
    1.  在Java程序语言中,接口是对类的一种描述。例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口。publicinterfaceComparab......
  • 【FAQ】【JAVA UI】HarmonyOS如何添加创建快捷键
    ​ 【问题描述】HarmonyOS如何添加创建快捷键? 【问题答案】参考资料配置文件说明(Java)config.json配置config.json添加shortcuts标签,代码如下"shortcuts":[......
  • Java实现图片转base64字符串和图片互相转换
    importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjava.io.*;/***@Description:*@Author:Han*@CreateDate:2022/9/7**/publicc......
  • java产生一个随机数
    //随机产生8位数StringBuilderstr=newStringBuilder();//定义变长字符串Randomrandom=newRandom();//随机生成数字,并添加到字符串for(inti=0;i<8;i++){str.a......
  • JAVA 几种常见的 ENUM
    方法一:常量在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法publicen......
  • java学习笔记20
    增强for循环JAVA5引入一种主要用于数组或集合的增强型for循环格式如下for(声明语句:表达式){//代码句子}publicclassForDemo05{  publicstaticvoidmain(Strin......