Java对象克隆

news/2024/11/24 11:26:02/

1.为什么要对象克隆?

因为直接new创建的对象,对象中的属性都是初始化的值,如果要使创建出来的对象要保存当前对象的状态,就要使用克隆了。

2.浅克隆

在浅克隆中,如果原型对象中的属性包含有引用变量,则将此引用对象的地址复制一份给克隆对象,原型对象和克隆对象中的引用变量指向相同的内存地址值类型的成员变量会重新复制一份,各使用各的。

 

实现方式:

1.重写Object类中的clone()方法,但注意还必须实现Cloneable接口。

2.Spring框架中的BeanUtils.copyProperties(source,target)。

3.深克隆

在深克隆中,无论原型对象的属性是值类型还是引用类型,都会复制一份给克隆对象

 

实现方法:

1.引用类型的类也重写clone()方法,之后此引用类型的属性需要单独克隆。

2.通过序列化的方式来实现,写入对象后,读取对象时获取克隆对象。序列化的方式也解决了多层克隆的问题

 


http://www.ppmy.cn/news/998737.html

相关文章

全新升级!腾讯云大数据 ES Serverless 服务开启日志分析新体验

2023年8月1号,腾讯云大数据 ES Serverless服务重磅发布,拥有自动弹性、完全免运维、极致成本、Elastic Stack生态兼容、灵活易用、稳定可靠等优势特性,提供开箱即用的云端Elasticsearch体验,助力企业高效上云! 自建El…

Python Web开发(详细教程)

前言 PythonWeb开发是使用Python语言进行Web应用程序开发的过程。Python是一种简洁、易读且功能强大的编程语言,因此在Web开发领域广受欢迎。 一、PythonWeb开发简介 PythonWeb开发可以涵盖多个方面,包括服务器端开发、数据库管理、前端设计和API开发…

【ONE·Linux || 基础IO(一)】

总言 文件输入与输出相关介绍:语言层面/系统层面文件调用接口举例、文件描述符、重定向说明、缓冲区理解。 文章目录 总言1、文件输入与输出1.1、预备知识1.2、语言层面:回归C语言中文件相关接口1.2.1、打开文件和关闭文件:对当前路径的理解…

【TypeScript】类型断言的基本使用

类型断言的概念 有些时候开发者比TS本身更清楚当前的类型是什么&#xff0c;可以使用断言&#xff08;as&#xff09;让类型更加精确和具体。 类型断言&#xff08;Type Assertion&#xff09;表示可以用来手动指定一个值的类型。 类型断言语法&#xff1a; 值 as 类型 或 <…

无脑入门pytorch系列(一)—— nn.embedding

本系列教程适用于没有任何pytorch的同学&#xff08;简单的python语法还是要的&#xff09;&#xff0c;从代码的表层出发挖掘代码的深层含义&#xff0c;理解具体的意思和内涵。pytorch的很多函数看着非常简单&#xff0c;但是其中包含了很多内容&#xff0c;不了解其中的意思…

LeetCode_双指针_中等_143.重排链表

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → L~n - 1~ → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → L1 → L~n - 1~ → L2 → L~n - 2~ → … 不…

快速搭建单机RocketMQ服务(开发环境)

一、什么是RocketMQ ​ RocketMQ是阿里巴巴开源的一个消息中间件&#xff0c;在阿里内部历经了双十一等很多高并发场景的考验&#xff0c;能够处理亿万级别的消息。2016年开源后捐赠给Apache&#xff0c;现在是Apache的一个顶级项目。 早期阿里使用ActiveMQ&#xff0c…

Node版本的切换之Window

步骤一&#xff1a;按健winR窗口&#xff0c;键盘输入cmd,然后回车。 步骤二&#xff1a; 输入where node&#xff0c;显示 步骤三&#xff1a;进入node.exe目录&#xff0c;并且删除父目录文件夹即&#xff1a;nodejs文件夹 步骤四&#xff1a;从官网下载版本管理并安装&#…