Java cloneable_java浅克隆和深克隆

Java cloneable_java浅克隆和深克隆先来看看JDK的解释:java.lang.CloneableAclassimplementstheCloneableinterfacetoindicatetothejava.lang.Object.clone()methodthatitislegalforthatmethodtomakeafield-for-fieldcopyofinstances…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

先来看看JDK的解释:

java.lang.Cloneable

A class implements the Cloneable interface to indicate to the java.lang.Object.clone() method that it is legal for that method to make a field-for-field copy of instances of that class.

Invoking Object’s clone method on an instance that does not implement the Cloneable interface results in the exception CloneNotSupportedException being thrown.

By convention, classes that implement this interface should override Object.clone (which is protected) with a public method. See java.lang.Object.clone() for details on overriding this method.

Note that this interface does not contain the clone method. Therefore, it is not possible to clone an object merely by virtue of the fact that it implements this interface. Even if the clone method is invoked reflectively, there is no guarantee that it will succeed.

Since:

JDK1.0

Version:

1.17, 11/17/05

Author:

unascribed

See Also:

java.lang.CloneNotSupportedException

java.lang.Object.clone()

意思就是:

此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。

如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。

按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。请参阅 Object.clone(),以获得有关重写此方法的详细信息。

注意,此接口不 包含 clone 方法。因此,因为某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。

我们平时需要对某个对象进行操作,但是这个对象被两个地方操作,却都要使用最原始时候的对象。这个时候就需要Cloneable接口出现了。并且如果我们对象里面的属性还有非基本类型对象的话也需要实现此接口直到没有属性是非基本类型对象为止(深拷贝)

这里有个不错的例子:http://cqitcs02370236.cnblogs.com/archive/2006/04/23/382644.html

2

2

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-04-23 13:46

浏览 5671

评论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184076.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用VS2015进行C++开发的6个主要原因

    使用VS2015进行C++开发的6个主要原因 使用VisualStudio2015进行C++开发在今天的Build大会上,进行了“将你的C++代码转移至VS2015的6

    2021年12月27日
    39
  • Linux基础——gcc编译、静态库与动态库(共享库)

    Linux基础——gcc编译、静态库与动态库(共享库)gcc编译器1、gcc工作流程2、gcc常用参数参数用途-v查看版本-o产生目标文件-I+目录指定头文件目录-D编译时定义宏-00/-01/-03没有优化/缺省值/优化级别最高-Wall提示更多警告信息-c只编译子程序-E生成预处理文件…

    2022年9月27日
    0
  • java如何打印菱形_java实现空心菱形

    java如何打印菱形_java实现空心菱形第一步:首先对图像进行解析想要打印如图所示的形状经过简单分析之后可得出想要打印该图形必须要进行多层循环嵌套分两个部分进行打印第一部分为上半部分前四行他们是递增的关系后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环。并且由于“*”位置的关系我们必须带入空格同时打印所以每个部分需要两个循环控制,即两个大循环每个里面嵌套两个小循环总计四个循环。第二部:对数字进行分析在分析之前我们必…

    2025年5月31日
    0
  • c语言如何遍历数组,C语言数组遍历

    c语言如何遍历数组,C语言数组遍历C语言数组遍历教程C语言for循环遍历数组详解语法for(i=0;i<count;i++){//arr[i]}说明其中count是数组的元素的个数,此时,数组的每一个元素是arr[i]。C语言while循环遍历数组详解语法inti=0;while(i<count){//arr[i]i++;}说明其中count是数组的元素的个数,此时,数组的每一个元…

    2022年7月22日
    7
  • 为什么0xffffffff是-1?(计算机对整型的存储)[通俗易懂]

    为什么0xffffffff是-1?(计算机对整型的存储)[通俗易懂]一个数字在计算机中都是以二进制补码的形式存储的。先了解这句核心。。。我们认为中的int整型数值顺序java中int类型是4个字节,也就是32位,其中第一位是符号位,int数值的存储结构我们利用System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));拿到int的最大值,是1111111111111111111111111111111,31个1,首位是0(代表正数,省略了)那我们给int的最大值+1,会发生什么呢?Sys

    2022年5月13日
    46
  • resnet是卷积神经网络吗_神经网络架构搜索的应用

    resnet是卷积神经网络吗_神经网络架构搜索的应用卷积神经网络在图像识别方面应用广泛,在实际应用在中,识别的准确率不仅仅与数据量有关,还与模型的架构有很大的关联。从首个成功应用于数字识别的卷积神经网络LeNet,到卷积神经网络崛起点AlexNet,以及陆陆续续的ZFNet,VGGNet,Inception系列和ResNet,这些架构在网络深度,宽度,卷积核大小和可视化部分都做了很大的改进,使得卷积神经网络的性能越来越强。

    2022年8月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号