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)
上一篇 2022年10月9日 下午5:46
下一篇 2022年10月9日 下午5:46


相关推荐

  • 【比赛】【树上路径(phantasm)】

    【比赛】【树上路径(phantasm)】—恢复内容开始—题目大意:求1,2,…,n有多少个长为m的子序列a,满足  a1=1,am=n  ∀i,ai+1−ai≥k保证这样的子序列存在。只需判断方案数的奇偶性。数据有T组。n,m,k≤109,T≤2×106.//dfs枚举集合//复杂度预估O(T*2^n)/…

    2022年5月30日
    33
  • 八数码问题求解「建议收藏」

    八数码问题求解「建议收藏」(一)问题描述在一个3*3的方棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些数码可以在棋盘上移动,其移动规则是:与空格相邻的数码方格可以移入空格。现在的问题是:对于指定的初始棋局和目标棋局,给出数码的移动序列。该问题称八数码难题或者重排九宫问题。(二)问题分析八数码问题是个典型的状态图搜索问题。搜索方式有两种基本的方式,即树式搜索和线式搜索。搜索策略大体有盲…

    2022年7月26日
    7
  • 【Android】ConstraintLayout约束布局最全解析

    【Android】ConstraintLayout约束布局最全解析ConstraintLa 约束布局最全解析一 ConstraintLa 概述二 ConstraintLa 基础篇 2 1 基础操作 2 2 控件间添加约束 2 3 约束布局 xml 代码实现三 ConstraintLa 进阶篇 3 1Chains 链 3 2 尺寸约束 3 3 百分比布局 3 4radio 属性 3 5 圆形定位四 ConstraintLa 高级篇 4 1Guideline4 3Group4 2Barrier 一 ConstraintLa 概述 Constraint

    2026年3月19日
    2
  • Java系统程序员修炼之道

    Java系统程序员修炼之道从 2002 开始接触 Java 学会 HelloWorld 这么经典的程序到如今不知不觉已经十年啦 十年中亲耳听到过不少大牛的演讲 见到过项目中的神人在键盘上运指如飞的编程速度 当时就被震撼了 当编程越来越成体力活 我们还能有自己的思想 还能修炼为 Java 系统级别的程序员嘛 学习与修炼以下知识与技能 帮你早日达成愿望 nbsp 一 Java 语言学习对线程 thread 串行化 反射

    2026年3月26日
    2
  • Instruments 调试

    Instruments 调试Instruments 调试转载

    2026年3月19日
    3
  • 智谱AI开启上市之路

    智谱AI开启上市之路

    2026年3月12日
    2

发表回复

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

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