使用场景:复制当前类,但新类状态的改变不影响原类时
protected Object clone()[java.lang.Object]
clone在进行时只能是
一个字段一个字段的复制。
对于只包含不可变字段(String,primitive类型)的类, shallow clone[浅拷贝]是可行的,
但是当当前类包含指向其他类的引用时(eg. Date类型),须进行deep clone[深拷贝],因为此时,当前类和克隆的新类都包含指向同一类内存的引用类型,对当前类或克隆类的改变都会影响彼此。
在进行克隆时要考虑:
当前类是否只包含不可变的字段,是则只需重写默认的clone方法[拓展protected 为public],否则要对引用字段进行克隆
1.implements Cloneable接口
2.重写默认的clone方法【拓展protected 为public(不知作者为什么在这里特别指出非得将protected拓展为public,感觉均可)】
public class Employee implements Cloneable{
private String name;
private double salary;
private Date hireDay;
public Employee clone() throws CloneNotSupportedException {
//call Object.clone()
Employee cloned = (Employee)super.clone();
//cloned.hireDay = (Date) hireDay.clone();
return cloned;
}
...
...
}
分享到:
相关推荐
6. 泛型:在Java集合框架中广泛使用泛型,可以确保集合中只包含指定类型的元素,提高了类型安全性和代码可读性。 7. 遍历集合:Java提供了两种主要的遍历方式,一种是传统的for循环,另一种是增强的for-each循环,...
Java 语言程序设计基础课后复习题答案第十三章 ...Java 语言程序设计基础课后复习题答案第十三章涵盖了 Java 语言的基础知识、对象和类、多态、接口、异常处理、日期和时间、compareTo 方法和 clone 方法等重要知识点。
**jQuery第三章代码详解** jQuery,作为一款广泛使用的JavaScript库,极大地简化了DOM操作、事件处理、动画制作以及Ajax交互。本章我们将深入探讨jQuery的核心概念、语法特性以及实际应用,帮助你更好地理解和掌握...
本章主要探讨了Java中的工具类及其常见的使用,同时也涵盖了基础算法的应用。 首先,我们关注Java中的`Object`类,它是所有Java类的父类。`Object`类提供了一些基本的方法,例如: 1. `clone()`方法:用于生成对象...
《锋利的JQUERY》是一本深入探讨jQuery技术的书籍,其第八章的实例下载提供了丰富的实践案例,帮助读者巩固和提升在jQuery方面的技能。jQuery是JavaScript的一个库,以其简洁的API和强大的功能深受Web开发者喜爱,...
**jQuery基础教程第8章下** 在本章节中,我们将深入学习jQuery库的高级特性,这个流行的JavaScript库极大地简化了DOM操作、事件处理、动画效果和Ajax交互。jQuery以其简洁的API和广泛的社区支持,成为了Web开发者的...
Instead of creating a new character from scratch every time, you could clone an existing character as a prototype, then modify the cloned character with different attributes like strength, speed, or ...
`compareTo()`方法按照字典顺序比较字符串,`clone()`创建字符串的副本。 9. **国际化** `java.text`包提供了`Format`类族,支持日期、数字、货币等的本地化格式化。 10. **性能优化** 在大量字符串操作时,使用...
本章“第4章 前端面试技能拼图2:前端基础知识,必知必会”将深入探讨那些面试官常问且开发者必须掌握的核心概念。 1. HTML(超文本标记语言): HTML是网页内容的结构标准,是前端开发的基石。理解不同标签的作用...
第六章数据库,主要围绕SQL查询语言、事务处理、存储过程以及数据库设计原则展开,对于数据操作和管理至关重要。 第七章框架部分,可能会涵盖Spring、MyBatis、Hibernate等常用JavaEE框架,以及Spring Boot和Spring...
第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8...
李宏毅老师2021年Spring机器学习深度学习上线新课程,持续更新中 PPT,作业代码,学习笔记,...第六章 中文 第七章 中文 第八章 中文 第九章 官网暂未更新 HomeWork部分 路径:machineLearningDeepLearning/homework
### 第六章 实例域 讨论实例域的初始化、可见性、并发访问等,以及如何设计线程安全的类。 ### 第七章 类的复用 涵盖类和接口的复用策略,如组合优于继承、接口优于抽象类等。 ### 第八章 并发 讨论Java并发工具和...
本章主要讨论了创建型设计模式之间的关系,特别是抽象工厂(Abstract Factory)、原型模式(Prototype)和工厂方法模式(Factory Method)之间的相互作用和应用场景。 首先,抽象工厂模式是一种提供创建一系列相关...
第6章 01 上节课复习 02 磁盘分区 03 文件系统与挂载 04 挂载信息讲解 05 磁盘用满的两种情况 06 软连接和硬链接 07 软连接和硬链接补充 第7章 01 ip地址与子网划分 02 ip地址配置 03 虚拟机网络模式 04 三层隔离...
【网页编程语言学习第10章】的课程涵盖了网页开发中的关键知识点,主要针对初学者和进阶者,旨在深入理解网页编程的核心概念和技术。在这个章节中,我们将会探讨以下几个重要方面: 1. HTML(超文本标记语言):...
在实际操作中,内核线程的创建和调度通常通过系统调用来实现,如Linux中的`clone`、`pthread_create`(在用户空间通过系统调用进入内核)、`schedule`等。调度算法包括轮转调度、优先级调度等,不同的调度策略会影响...
#### 二、第一章:Object类 **1. Object类简介** - `Object`类是Java中所有类的根类,即所有Java类都直接或间接继承自`Object`类。 - 如果一个类没有显式地指定父类,则默认继承自`Object`类。 - 由于`Object`类的...
在本章习题中,虽然没有直接提及Git的使用,但我们可以从标签"git"推断出相关知识内容。 1. **Git基本概念**:Git的核心概念包括仓库(Repository)、分支(Branch)、提交(Commit)、合并(Merge)等。仓库是保存...