原型模式--深复制/浅复制

  原型模式用于克隆复杂对象,由于new一个实例对象会消耗大部分时间,所以原型模式可以节约大量时间

 1 public class Sheep implements Cloneable{2     private String name;3     private Date birth;4     public Sheep(String name, Date birth) {5         this.name = name;6         this.birth = birth;7     }8     @Override9     protected Object clone(){
10         Sheep obj = null;
11         try {
12             obj = (Sheep) super.clone();
13             //深复制
14 //            obj.birth = (Date) this.birth.clone();
15         } catch (CloneNotSupportedException e) {
16             e.printStackTrace();
17         }
18         return obj;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public Date getBirth() {
27         return birth;
28     }
29     public void setBirth(Date birth) {
30         this.birth = birth;
31     }
32     
33 }
import java.util.Date;public class Client {public static void main(String[] args) {Date date = new Date(1515529952L);Sheep s1 = new Sheep("s1",date);Sheep s2 = (Sheep) s1.clone();System.out.println(s1.getBirth());System.out.println(s2.getBirth());date.setTime(15L);//修改后System.out.println(s1.getBirth());System.out.println(s2.getBirth());}
}
 1 浅复制2     Sun Jan 18 20:58:49 CST 19703     Sun Jan 18 20:58:49 CST 19704     //修改后5     Thu Jan 01 08:00:00 CST 19706     Thu Jan 01 08:00:00 CST 19707 深复制8     Sun Jan 18 20:58:49 CST 19709     Sun Jan 18 20:58:49 CST 1970
10     修改后
11     Thu Jan 01 08:00:00 CST 1970  //只对s1修改
12     Sun Jan 18 20:58:49 CST 1970

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次全设备通杀未授权RCE的挖掘经历

想来上一次挖洞还在一年前的大一下,然后就一直在忙活写论文,感觉挺枯燥的(可能是自己不太适合弄学术吧QAQ),所以年初1~2月的时候,有空的时候就又会挖一挖国内外各大知名厂商的设备,拿了几份思科…

【机器学习】基于Transformer架构的移动设备图像分类模型MobileViT

1.引言 1.1. MobileViT是什么? MobileViT是一种基于Transformer的轻量级视觉模型,专为移动端设备上的图像分类任务而设计。 背景与目的: MobileViT由Google在2021年提出,旨在解决移动设备上的实时图像分类需求。与传统的卷积神…

微信小程序的目录结构

微信小程序的目录结构主要包括以下几个部分,这些部分共同构成了小程序的基础框架和页面展示。以下是一个详细的目录结构介绍: 1. 根目录文件 app.js:小程序的主逻辑文件,用于监听并处理小程序的生命周期函数、全局变量等。这个文…

[leetcode] 双指针集锦(python实现)

在解题时,双指针的思想常常可以帮助我们优化解法的时间空间复杂度。接下来,我将通过两道LeetCode的题来给大家讲解双指针的使用方法。 文章目录 题目1:Two Sum题目2:Three Sum双指针思想的总结 题目1:Two Sum 题目描述…

Selenium 定位编辑框有span

当使用Selenium进行网页自动化测试时,定位一个包含span元素的编辑框可能会有些棘手,因为span通常用于对其他HTML元素进行分组或应用样式,而不一定是真正的可输入字段。不过,一旦我们确定了正确的策略,定位编辑框还是相…

AtomicInteger

1. 前言 AtomicInteger是Java中的一个原子整数类,它提供了一种在多线程环境下进行原子性操作的方法。所谓原子性操作是指不会被线程调度机制打断的操作;这些操作可以在可能被其他线程影响的情况下作为一个不可分割的整体执行。 在并发编程中&#xff0…

【Android面试八股文】Android中操作多线程的方式有哪些?

文章目录 1. 使用 `Thread` 和 `Runnable`2. `AsyncTask`3. `Handler` 和 `Looper`4. `HandlerThread`5. `ThreadPoolExecutor`6. `IntentService`7. `RxJava`8. `Coroutine`(协程)9. `WorkManager`在Android开发中,有多种方式可以进行多线程操作。以下是主要的几种方式: 1…

【日常记录】【vue】vite-plugin-inspect 插件的使用

文章目录 1、vite-plugin-inspect2、安装3、使用4、链接 1、vite-plugin-inspect vite-plugin-inspect 可以让开发者在浏览器端就可以看到vue文件编译后的代码、vue文件的相互依赖关系 2、安装 npm i -D vite-plugin-inspect// vite.config.ts import Inspect from vite-plugi…

LeetCode题练习与总结:最长连续序列--128

一、题目描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出&…

SpringBootWeb 篇-入门了解 Spring Cache 、Spring Task 与 WebSocket 框架

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 Spring Cache 概述 1.1 Spring Cache 具体使用 1.1.1 引入依赖 1.1.2 Spring Cache 相关注解的介绍 2.0 Spring Task 概述 2.1 cron 表达式 2.2 Spring Task 使用…

基于微信公众号开发h5的前端流程

1.首先公众号进行配置,必须要https域名 还有个txt文件,有弹框提示需要下载放在服务器上 前端处理code的代码封装 // 微信公众号授权 export function wxAuthorize(calback) {// 非静默授权,第一次有弹框 这里的回调页面就是放在服务器上微信…

c语言连接两个字符串

在C语言中,连接两个字符串可以使用 strcat 函数。这个函数将一个字符串复制到另一个字符串的末尾。使用 strcat 函数之前,需要确保目标字符串有足够的空间来容纳源字符串,否则可能会导致缓冲区溢出。 下面是一个使用 strcat 函数连接两个字符…

外贸推广渠道有哪些

外贸推广渠道多种多样,每一种都有其特定的优势和适用场景。以下是一些常见的外贸推广渠道,它们被广泛用于吸引国际客户、增加品牌曝光度和促进销售。 外贸B2B平台推广: 阿里巴巴国际站:作为全球知名的B2B平台,汇聚了大…

MFC工控项目实例之五CFile类读写系统参数

承接专栏《MFC工控项目实例之四在调试目录下创建指定文件夹》 实时保存输入的iPlotX坐标轴最小值、最大值到CFG.PAR文件,打开界面从CFG.PAR文件中实时读取保存的最小值、最大值在编辑框中显示。 1、SEAL_PRESSURE.h中添加代码 class CSEAL_PRESSUREApp : public CW…

我主编的电子技术实验手册(07)——串联电路

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程

最新大屏幕互动系统PHP源码 附动态背景图和配乐素材 含搭建教程 测试环境:apachePHP7.3MySQL5.7 源码免费下载地址抄笔记 (chaobiji.cn)

Web前端网页滚动效果:深度解析与创意实践

Web前端网页滚动效果:深度解析与创意实践 在Web前端设计中,滚动效果作为一种交互方式,不仅影响着用户体验,更在某种程度上定义了网页的视觉风格和动态特性。本文将深入剖析Web前端网页滚动效果的四个方面、五个方面、六个方面和七…

装饰器模式构建IO流体系

装饰器模式简介 装饰器模式是GOF23种设计模式中较为常用的一种模式。它可以实现对现有类的包装和装饰,使新的类具有更强的功能。 装饰器模式 class Iphone {private String name;public Iphone(String name){this.name name;}public void show(){System.out.pri…

C++前期概念(重)

目录 命名空间 命名空间定义 1. 正常的命名空间定义 2. 命名空间可以嵌套 3.头文件中的合并 命名空间使用 命名空间的使用有三种方式: 1:加命名空间名称及作用域限定符(::) 2:用using将命名空间中某个成员引入 3:使用using namespa…

MySql 数据库、表常用语句

数据库 查看当前所有数据库 mysql> show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | --------------------创建一个新数据库 创建一个…