对java中的clone()感兴趣,看了看java的api文档。并搜索了一些相关资料,做下总结。
1.clone定义
x.clone()!=x的意思是x.clone()返回的对象为新建的对象,与原来的对象地址不同。
x.clone().getClass() == x.getClass()的意思是克隆出的对象与原对象都是同一个类生成的。
x.clone().equals(x)的意思是新的对象与原来的对象相同(在equals()函数下是相同的,所以通常需要覆盖equals()方法)
2.java中clone方法的实现。
首先要实现clone方法的类要实现Cloneable接口,然后实现覆盖clone方法。在Object类中,clone方法定义为
protected Object clone() throws CloneNotSupportedExcption
,实现的时候需要改修饰符为public。最后在实现方法的时候按照惯例返回的对象通过调用super.clone获得,这样可以保证x.clone().getClass() == x.getClass()
最后需要注意的是引用部分红色标注的部分,这是用来实现深拷贝的。
注:Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。
Java clone详解
http://akalius.iteye.com/blog/155037
分享到:
相关推荐
需要注意的是,不是所有的类都能被克隆,需要实现`Cloneable`接口并覆盖`clone()`方法。 5. **finalize() 方法**: - `finalize()`方法在垃圾收集器准备回收对象前被调用,提供了一个清理资源的机会。然而,由于...
### JavaSE阶段Bug解决与知识点总结 #### 一、Java基本语法及二进制表示 在Java编程中,了解二进制表示对于理解数值类型及其运算至关重要。在本笔记中,我们将深入探讨二进制的基本概念,特别是原码、反码和补码。...
JavaSE是Java的标准版,包含了Java的核心特性,如基本数据类型、类、接口、异常处理、多线程等。这份18年的JavaSE面试宝典涵盖了广泛的Java基础知识和进阶概念,以下是其中部分问题的详细解答: 1. 当Class实现...
另外,我们还需要了解浅复制(Shallow Clone)和深复制(Deep Clone)的区别。浅复制仅仅复制对象的引用,而深复制则复制对象及其内部引用的其他对象。深复制是通过覆盖clone方法来实现的,以确保复制过程中所有对象...
在JavaSE中,面向对象编程是其核心思想之一,主要包括封装、继承、多态和抽象四大特性。 1. **封装**:封装是将数据和操作数据的方法捆绑在一起,隐藏内部实现细节,对外提供公共接口。在Java中,通过访问控制符...
5. **clone()**:克隆当前对象,创建与之相同的新对象。实现Cloneable接口后才能调用此方法。 6. **finalize()**:垃圾回收前调用,用于清理资源,但不保证一定会调用,不应依赖此方法释放资源。 **线程**: 1. **...
- `Object`类提供了诸如`hashCode()`、`clone()`、`toString()`等基本方法,还包含了`equals()`方法的默认实现。 - 默认情况下,`equals()`方法比较对象的内存地址,判断两个对象是否是同一个实例。 2. **equals...
3. clone 对象:clone 对象是指创建一个与原对象相同的新对象,clone 对象可以通过 clone() 方法实现。 二、JavaSE 基础 1. Java 中的 goto 语句:Java 中没有 goto 语句,但可以使用 break 和 continue 语句来...
JavaSE,全称为Java Standard Edition,是Java编程语言的核心部分,主要用来开发桌面应用程序。这个实验项目面向的是初学者,特别是那些对Git版本控制工具不熟悉的开发者。Git是一种分布式版本控制系统,广泛应用于...
面向对象编程(OOP)是Java编程的基础之一,主要涉及四个核心概念:继承、封装、多态性和抽象。 - **继承**:通过继承机制,子类可以从父类那里获得属性和方法,使得代码复用成为可能。这种机制提高了代码的可维护性...
JavaSE常用API包括String、StringBuilder、StringBuffer的区别,Math类的方法,数组和字符串的length方法等。在性能考虑上,使用"+"运算符或StringBuilder/StringBuffer取决于具体场景。 **Java的数据类型** Java...
此外,clone方法在Java中用于创建对象的副本,而对象的相等性判断则涉及到hashCode方法和equals方法的关系。 JavaSE语法部分包含了许多细节,例如Java中没有goto语句,解释了逻辑运算符&和&&的区别,以及如何在多重...
git clone https://github.com/droboports/java8.git cd java8 ./build.sh 每次调用都会使用所有生成的输出创建一个日志文件。 ./build.sh distclean删除所有内容,包括下载的文件。 ./build.sh clean会删除除已...
- Java通过继承和接口实现多态,即允许将子类对象当作父类类型来处理,这是面向对象编程的核心特征之一。 6. Java的异常处理 - Java的异常分为Error和Exception,其中Exception又分为checked异常和unchecked异常...
以下是对JavaSE部分关键知识点的详细解析。 1. **面向对象特性** - **继承**:允许创建一个新类(子类)基于已存在的类(父类),从而实现代码复用和类层次结构。 - **封装**:通过限制类的外部访问,只暴露必要...
在Java编程语言中,面向对象是其核心特性之一,它主要包含了封装、继承和多态三个基本概念。封装是将数据和操作数据的方法捆绑在一起,形成一个独立的单元,这样可以保护数据不受外部的直接访问,提高代码的安全性。...
clone对象涉及到对象的复制,但需要注意的是,克隆的实现需要实现Cloneable接口,并重写clone()方法。 JavaSE语法部分提及了Java语言的一些基本规则,包括控制结构、循环结构、类和对象、继承与接口实现等。例如,...
3. clone对象是指创建并返回当前对象的一个拷贝,如果类没有重写clone方法,它将使用Object类的clone方法,该方法会创建一个新的实例并复制该对象的值。 二、JavaSE语法 1. Java没有goto语句,Java语言设计者认为...