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` 接口,并且支持深拷贝功能。深拷贝是一种复制对象的方式,它不仅复制对象本身,还复制对象引用的...
默认的`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`接口。这个接口...
### Java深度克隆详解 #### 一、引言 在Java开发过程中,对象拷贝是一项常见操作。...无论是使用`Cloneable`接口还是序列化与反序列化,深度克隆都能有效地解决对象拷贝带来的问题,提高程序的稳定性和安全性。
在给出的内容部分中,通过具体的Java代码示例,讨论了在Java中实现对象复制的机制,特别是通过实现Cloneable接口和重写Object类的clone方法来完成对象的浅复制与深复制。 知识点一:Java对象复制的基本概念 在Java...
在Java中,原型模式通过实现Cloneable接口和覆盖clone()方法来复制对象,避免了使用构造函数进行深度复制的复杂性。接下来我们将深入探讨Java原型模式的核心概念、实现方式以及实际应用。 ### 核心概念 1. **原型...
在Java中,如果一个类想要实现`Cloneable`接口并且重写`clone()`方法,那么就可以支持克隆操作。 首先,让我们看第一个实例: ```java public class A implements Cloneable { public String str[]; A() { str...
抽象类和接口 ...通过这个实验,我们学习了抽象类、接口、Cloneable 接口和多态性的概念,并掌握了如何使用它们来编写 Java 程序。我们还学习了浅拷贝和深拷贝的概念,并掌握了如何消除浅拷贝的方法。
在Java、C#等面向对象的语言中,原型模式通过实现`Cloneable`接口或使用序列化机制来实现对象的复制。在这个"原型模式实践代码"中,我们可以预期看到如何在实际编程中应用这一模式。 在Java中,`Cloneable`接口是...