今天开发中遇到一个问题:
需要将一个对象进行clone,对他的副本的属性进行修改,供一个特定的对象使用,完成某个需求。
平时对java的clone看的不是很多,相当然的使用了Object的clone()方法:
SomObject obj = new SonObject();
SomObject objClone =obj.clone();
结果发现更新obj的某个成员变量的时候(ArrayList),objClone中的成员变量也相应的发生变化!但是obj.hashCode() 却不等于objClone.hashCode(),说明他们并没有指向同一个对象!看到这个结果一下子蒙了,这是为什么呢??
仔细想了一下,恍然大悟:
java中的clone是浅拷贝,只是拷贝对象本身,以及基本数据类型,对于对象的非基本数据类型变量,比如ArrayList等,并不进行拷贝!
---------
java 代码
- public class SomObject implements Cloneable{
-
- private List wifeList;
-
- private int count;
-
- ....
-
- public Object clone(){
- try{
- return super.clone();
- }catch(....){
- ....
- }
- return null;
- }
- }
-
- SomObject obj = new SomObject();
-
- obj.setCount(1);
- obj.setWifeList(new ArrayList("Beautifule"));
-
- SomObjec cloneObj = (SomObject)obj.clone();
-
- obj.setCount(2);
- obj.setWifeList(new ArrayList("Tender"));
-
- System.out.println(obj.getCount());
- System.out.println(obj.getWifeList().get(0));
-
-
- System.out.println(cloneObj.getCount());
- System.out.println(cloneObj.getWifeList().get(0));
分享到:
相关推荐
同时,Jlink v8的Clone问题也是开发人员可能会遇到的问题,指的是固件被非法复制或者仿冒,导致一些功能异常或者无法正常使用。这篇文档主要讲述了如何修复Jlink v8固件以及如何解决Clone问题。 首先,文档提到在...
这通常包含一个或多个.exe可执行文件,这些文件可能用于更新Jlink-clone的固件,或者替换驱动程序。 3. **识别设备**:在设备管理器中找到Jlink-clone设备,确认其当前的驱动状态和版本。这有助于了解是否已安装了...
在编程和嵌入式开发领域,`JLink`是一个广泛使用的调试工具,它支持多种微控制器和处理器。`MDK`(Microcontroller Development Kit)是Keil公司开发的一款嵌入式软件开发工具,包含了编译器、调试器和其他辅助工具...
对于“J_ILIN clone”提示,这通常意味着你可能遇到了一个假冒的J-Link设备。这些克隆产品可能在硬件或软件上存在不兼容性,导致正常功能受限。解决这个问题,可以尝试联系制造商获取支持,或者考虑购买官方的J-Link...
为了解决这一问题,Git社区开发了一个名为Git LFS(Large File Storage)的扩展工具,专门用来管理大文件。本文将深入探讨Git LFS的工作原理、安装和使用方法,以及如何通过它来解决克隆大文件项目的问题。 Git LFS...
在使用 JLINK 仿真器进行单片机开发时,可能会遇到固件丢失或升级固件后提示 Clone 的问题,本文将提供解决该问题的步骤。 问题描述 使用 JLINK 仿真器时,可能会出现固件丢失或升级固件后提示 Clone 的问题,这将...
SSH密钥对包括一个私钥和一个公钥,其中私钥是保密的,而公钥则可以安全地公开。用户可以使用私钥来加密信息,而使用公钥来解密信息,这种机制也可以用于身份验证。 在Git使用场景下,SSH密钥对被用来确认用户的...
Jlink v8固件修复或解决Clone问题的知识点主要涉及对Jlink v8调试器固件的重新烧写和如何处理由固件损坏或克隆导致的问题。Jlink v8是SEGGER公司生产的一款JTAG/SWD仿真器,广泛应用于嵌入式开发领域。由于Jlink v8...
在Windows 64位系统中,由于兼容性问题,有时可能会遇到JLINK的固件升级困难或者克隆设备无法正常工作的状况。 解决JLINK V8固件升级问题的步骤如下: 1. **下载固件**:首先,你需要访问SEGGER官方网站或MDK5.0的...
标题和描述中提到的问题"j-link-is-defective"和"j-link clone"指的是用户可能遇到了假冒的J-Link调试器或者J-Link在使用过程中出现了故障。这里我们将详细讨论如何识别和解决这些问题。 首先,"j-link-is-...
在Java编程语言中,`clone`是一个非常重要的概念,它涉及到对象复制和对象的深拷贝与浅拷贝。本文将深入探讨Java中的`clone`方法及其相关知识点。 首先,`clone`方法是Java `Object`类的一个成员方法,定义为`...
v8型号是jlink产品线中的一个版本,具有高速的数据传输能力和广泛的兼容性,是许多嵌入式开发者不可或缺的工具之一。 由于固件更新往往与设备的正常运行息息相关,因此在更新过程中需要谨慎操作。如果固件丢失或者...
本文档旨在详细介绍如何在ArcGIS Pro 2.5中搭建一个名为`palm-detection`的深度学习环境。这不仅适用于从事地理信息系统(GIS)领域的专业人士,也适合对深度学习技术感兴趣的开发人员。 #### 二、环境部署步骤 **1....
首先,J-Link v8 是该设备的一个特定版本,可能会遇到USB不识别或者LED指示灯不亮的问题。这通常是由于固件过时或损坏导致的。为了解决这个问题,我们需要对J-Link固件进行重刷。固件更新不仅可以修复已知的bug,还...
总之,`better-clone` 是前端开发中的一个重要工具,它解决了 JavaScript 原生克隆方法的局限性,提供了更强大的深拷贝功能,适用于处理复杂的数据结构。了解并熟练使用这个库,可以提升开发效率,保证代码质量。
在此问题中,每个节点包含一个唯一整数值和一个与该节点相邻节点列表。当克隆一个图时,需要创建出一个与原图结构完全相同的新图,但其中的节点都是独立的,即原始图中节点的值相同,但它们的引用地址不同。 为了...
MD.070 Clone环境alert设置是针对JOYOUNG公司的一种特定的客户化开发技术设计,主要关注在克隆环境中如何配置和管理...它是一个内部使用的公司机密文档,对于维持JOYOUNG公司的IT基础设施的稳定性和效率具有重要作用。
当你遇到“J-LINK clone”问题时,通常意味着你正在使用的J-LINK设备可能是非官方的复制品,这可能导致一些功能受限或者稳定性问题。本教程将帮助你修复这些问题,并教你如何重新写入J-LINK序列号。 首先,你需要...
标题中的"246clone-master.rar"表明这是一个源代码仓库的克隆版本,通常在开源项目中,"master"分支代表了项目的主分支,是最稳定、最新的开发版本。"rar"是一个压缩文件格式,用于存储多个文件在一个单一的档案中,...