The following code describes how the cloneable works
package org.cxz.clone;
import java.util.concurrent.atomic.AtomicInteger;
public class Target implements Cloneable{
public AtomicInteger num = null;
@Override
protected Object clone() throws CloneNotSupportedException {
Target ret = new Target();
ret.num = new AtomicInteger(num.get());
return ret;
}
public static void main(String[] args){
AtomicInteger oldNumber = new AtomicInteger(100);
Target origin = new Target();
origin.num = oldNumber;
Target cloner = null;
try {
cloner = (Target)origin.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cloner.num.addAndGet(100);
System.out.println(origin.num);
System.out.println(cloner.num);
}
}
You can comment the method clone() and run the app again to find what the differences are.
分享到:
相关推荐
总的来说,Map接口提供了一种高效的方式来存储和检索键值对数据,可变参数简化了函数调用,Cloneable接口支持对象的克隆,而多线程则为并发编程提供了基础。理解和掌握这些知识点对于Java开发至关重要。
- 实现`Cloneable`接口并重写`clone()`方法需要注意,`clone()`默认执行的是浅拷贝,需要在子类中显式调用`super.clone()`并处理引用类型的字段。 - 序列化和反序列化可能涉及性能开销,不适合大量或频繁的复制...
安装可克隆您应该安装 : Install-Package Cloneable或者通过 .NET Core 命令行界面: dotnet add package Cloneable来自包管理器控制台或 .NET Core CLI 的任一命令都将下载并安装 Cloneable 和所有必需的依赖项。...
'use strict'var cloneable = require ( 'cloneable-readable' )var fs = require ( 'fs' )var pump = require ( 'pump' )var stream = cloneable ( fs . createReadStream ( './package.json' ) )pump ( stream . ...
deep_cloneable 这个gem为每个ActiveRecord :: Base对象提供了进行深度克隆的可能性,该克隆包括用户指定的关联。 这是的Rails 3+升级。要求Ruby 1.9.3、2.0.0、2.1.5、2.2.2、2.3.0、2.4.4、2.5.5、2.6.3(已测试)...
在本题目中,我们面临的是一个关于 Java 编程的任务,目标是实现一个名为 `MyStack` 的类,该类需要实现 `Cloneable` 接口,并且支持深拷贝功能。深拷贝是一种复制对象的方式,它不仅复制对象本身,还复制对象引用的...
在Java编程语言中,`java.lang.CloneNotSupportedException`是一个运行时异常,通常发生在尝试克隆一个对象时,但该对象所对应的类没有实现`Cloneable`接口。`Cloneable`接口是Java中的一个标记接口,用于指示一个类...
若想实现对象的克隆,首先需要确保对象所属的类实现了 `Cloneable` 接口。 #### 2. 解决方案一:检查对象的可克隆性 - 在尝试克隆对象之前,需要检查该对象是否实现了 `Cloneable` 接口。 - 如果对象实现了 `...
知识点7:在使用`clone()`方法时,需要处理异常`CloneNotSupportedException`,这是因为在调用`clone()`方法之前,需要检查该对象是否为`Cloneable`,否则即使对象不是`Cloneable`,也可能在调用`clone()`方法时抛出...
默认的`Object.clone()`方法是受保护的,因此需要在实现`Cloneable`接口的类中重写`clone()`方法为公共方法。如果没有实现`Cloneable`接口并在实例上调用`clone()`,会抛出`CloneNotSupportedException`异常。 三、...
在Java编程语言中,`Cloneable`接口和`clone()`方法是两个重要的概念,它们用于对象复制。在本文中,我们将深入探讨Java中的浅克隆(shallow clone)和深克隆(deep clone),并结合测试代码进行分析。 首先,让...
本实验主要讲解了Java中的抽象类和接口的概念和使用方法,并且深入探讨了 Cloneable 接口和 clone 方法在对象内容复制中的应用。 一、抽象类的概念和使用方法 在 Java 中,抽象类是一个不能被实例化的类,它提供了...
这种模式的核心在于Java中的`Cloneable`接口和`clone()`方法。 首先,我们要了解`Cloneable`接口。在Java中,如果一个类想要实现克隆功能,必须实现`Cloneable`接口。这个接口没有定义任何方法,仅仅是一个标记接口...
`Cloneable`接口是用于标记对象可以被克隆,而`Serializable`接口则是用于对象的序列化和反序列化,但这通常用于跨网络传输或持久化存储,而不是直接的克隆。 首先,让我们看看如何使用`Cloneable`接口来实现原型...
1. 实现`Cloneable`接口:为了让对象可以被克隆,首先需要在类声明中添加`implements Cloneable`。 2. 覆盖`clone()`方法:重写`clone()`方法,通常只需返回`super.clone()`,但要注意处理可能抛出的`...
3. 处理`CloneNotSupportedException`:尽管我们的类实现了`Cloneable`,但在某些情况下,如父类未实现`Cloneable`时,仍然可能会抛出异常,因此需要捕获并处理它。 当一个对象被`clone()`时,如果对象内部含有其他...
在Java中,我们可以利用`java.lang.Cloneable`接口和`clone()`方法来实现原型模式。 在Java中,实现原型模式主要有两个步骤: 1. **实现Cloneable接口**:首先,我们需要让我们的类实现`Cloneable`接口。这个接口...