今天开发中遇到一个问题:
需要将一个对象进行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));
分享到:
相关推荐
这通常包含一个或多个.exe可执行文件,这些文件可能用于更新Jlink-clone的固件,或者替换驱动程序。 3. **识别设备**:在设备管理器中找到Jlink-clone设备,确认其当前的驱动状态和版本。这有助于了解是否已安装了...
在编程和嵌入式开发领域,`JLink`是一个广泛使用的调试工具,它支持多种微控制器和处理器。`MDK`(Microcontroller Development Kit)是Keil公司开发的一款嵌入式软件开发工具,包含了编译器、调试器和其他辅助工具...
为了解决这一问题,Git社区开发了一个名为Git LFS(Large File Storage)的扩展工具,专门用来管理大文件。本文将深入探讨Git LFS的工作原理、安装和使用方法,以及如何通过它来解决克隆大文件项目的问题。 Git LFS...
在使用 JLINK 仿真器进行单片机开发时,可能会遇到固件丢失或升级固件后提示 Clone 的问题,本文将提供解决该问题的步骤。 问题描述 使用 JLINK 仿真器时,可能会出现固件丢失或升级固件后提示 Clone 的问题,这将...
对于“J_ILIN clone”提示,这通常意味着你可能遇到了一个假冒的J-Link设备。这些克隆产品可能在硬件或软件上存在不兼容性,导致正常功能受限。解决这个问题,可以尝试联系制造商获取支持,或者考虑购买官方的J-Link...
在Windows 64位系统中,由于兼容性问题,有时可能会遇到JLINK的固件升级困难或者克隆设备无法正常工作的状况。 解决JLINK V8固件升级问题的步骤如下: 1. **下载固件**:首先,你需要访问SEGGER官方网站或MDK5.0的...
SSH密钥对包括一个私钥和一个公钥,其中私钥是保密的,而公钥则可以安全地公开。用户可以使用私钥来加密信息,而使用公钥来解密信息,这种机制也可以用于身份验证。 在Git使用场景下,SSH密钥对被用来确认用户的...
在Java编程语言中,`clone`是一个非常重要的概念,它涉及到对象复制和对象的深拷贝与浅拷贝。本文将深入探讨Java中的`clone`方法及其相关知识点。 首先,`clone`方法是Java `Object`类的一个成员方法,定义为`...
标题和描述中提到的问题"j-link-is-defective"和"j-link clone"指的是用户可能遇到了假冒的J-Link调试器或者J-Link在使用过程中出现了故障。这里我们将详细讨论如何识别和解决这些问题。 首先,"j-link-is-...
首先,J-Link v8 是该设备的一个特定版本,可能会遇到USB不识别或者LED指示灯不亮的问题。这通常是由于固件过时或损坏导致的。为了解决这个问题,我们需要对J-Link固件进行重刷。固件更新不仅可以修复已知的bug,还...
总之,`better-clone` 是前端开发中的一个重要工具,它解决了 JavaScript 原生克隆方法的局限性,提供了更强大的深拷贝功能,适用于处理复杂的数据结构。了解并熟练使用这个库,可以提升开发效率,保证代码质量。
总结一下,当使用`git clone`克隆一个包含子模块的项目时,如果因为网络或其它原因导致子模块没有下载完全,可以采用`git submodule update --init --recursive`命令来确保子模块被完整下载并正确初始化。...
MD.070 Clone环境alert设置是针对JOYOUNG公司的一种特定的客户化开发技术设计,主要关注在克隆环境中如何配置和管理...它是一个内部使用的公司机密文档,对于维持JOYOUNG公司的IT基础设施的稳定性和效率具有重要作用。
当你遇到“J-LINK clone”问题时,通常意味着你正在使用的J-LINK设备可能是非官方的复制品,这可能导致一些功能受限或者稳定性问题。本教程将帮助你修复这些问题,并教你如何重新写入J-LINK序列号。 首先,你需要...
标题中的"246clone-master.rar"表明这是一个源代码仓库的克隆版本,通常在开源项目中,"master"分支代表了项目的主分支,是最稳定、最新的开发版本。"rar"是一个压缩文件格式,用于存储多个文件在一个单一的档案中,...
本文将针对“JLINK V9修复CLONE”的主题进行详细阐述,结合提供的文件资源,提供一套实用的操作指南,帮助用户解决可能遇到的问题。 首先,我们要明确JLINK V9 CLONE是指JLINK V9的克隆版本,可能存在一些硬件或...
在描述中提到的问题,"git clone下载下来的全部源码和子模块,网不好的话自己下载很困难",指的是通过Git命令获取ESP-IDF完整源码库时可能遇到的网络难题。ESP-IDF不仅包含主项目源码,还包含了多个子模块,这些子...