当前位置: 首页 > 编程笔记 >

Javaclone()方法

颜森
2023-03-14
本文向大家介绍Javaclone()方法,包括了Javaclone()方法的使用技巧和注意事项,需要的朋友参考一下

示例

该clone()方法用于创建和返回对象的副本。应避免使用这种有争议的方法,因为它存在问题,应使用复制构造函数或其他复制方法来代替clone()。

为了使用该方法,所有调用该方法的类都必须实现该Cloneable接口。

该Cloneable接口本身只是用来改变行为的标签接口native clone(),如果调用对象的类实现的检查方法Cloneable。如果调用者未实现此接口,CloneNotSupportedException则将引发a。

在Object类本身不实现这个接口所以CloneNotSupportedException如果调用对象是类的将被抛出Object。

为了使克隆正确,克隆应该独立于要克隆的对象,因此可能需要在返回对象之前对其进行修改。这实际上意味着通过复制构成要克隆对象内部结构的任何可变对象来创建“深层副本” 。如果未正确实施此操作,则克隆的对象将不会独立,并且与从其克隆的对象对可变对象的引用相同。这将导致行为不一致,因为对其中一个进行的任何更改都会影响另一个。

class Foo implements Cloneable {
    int w;
    String x;
    float[] y;
    Date z;
    
    public Foo clone() {
        try {
            Foo result = new Foo();
            // 按值复制基元
           result.w= this.w;
            // 诸如String之类的不可变对象可以通过引用复制
           result.x= this.x;
            
            //字段y和z表示可变对象;递归克隆它们。
            if (this.y != null) {
             result.y= this.y.clone();
            }
            if (this.z != null) {
             result.z= this.z.clone();
            }
            
            // 完成,返回新对象
            return result;
            
        } catch (CloneNotSupportedException e) {
            // 如果任何克隆的可变字段未实现Cloneable
            throw new AssertionError(e);
        }
    }
}
           

 类似资料:
  • 问题内容: java中的clone方法vs复制构造函数。哪个是正确的解决方案。每种情况在哪里使用? 问题答案: 克隆已损坏,因此请勿使用。 Object类的CLONE方法是一种有些神奇的方法,它没有纯Java方法可以做的事情:它产生其对象的相同副本。自Java编译器的Beta版本发布以来,它就已经存在于原始Object超类中。就像所有古代魔法一样,它需要适当的咒语以防止该法术意外地反射击 首选复制

  • 例如,我如何做到这一点? 和 像这样的东西,我试着在网上搜索,但我找不到任何关于这方面的教程,所以我在这里问。

  • 只是想知道为什么 调用world\u开关: 结果没有任何变化,我想增加或减少实例变量@pos\u X或@pos\u Y 这是我的初始化方法 这就是我如何创建类的实例 我们将不胜感激

  • 本文向大家介绍iOS hitTest方法&pointInside方法相关面试题,主要包含被问及iOS hitTest方法&pointInside方法时的应答技巧和注意事项,需要的朋友参考一下 hitTest方法 当事件传递给控件的时候,就会调用控件的这个方法,去寻找最合适的view point:当前的触摸点,point这个点的坐标系就是方法调用者   pointInside方法 作用:判断当前这个

  • 书籍与公开课 我喜欢看一些有关基础原理的书,如操作系统、计算机网络等。但是最近在看《计算机网络:自顶向下方法》的时候发现,这些书都太大而全了,让人看着很吃力,而且抓不住重点。 知名大学都有公开课,视频比枯燥的书要更好,也讲的更有侧重点。我觉得以后可以跟着公开课来看书: 如果不知道某个科目要看什么书,可以跟着公开课学习,看参考教材 如果已经确定要读某本经典书,可以先找有没有公开课 这些公开课可以在知

  • 主要内容:Python类实例方法,Python类方法,Python类静态方法和类属性一样,类方法也可以进行更细致的划分,具体可分为 类方法、 实例方法和 静态方法。 和类属性的分类不同,对于初学者来说,区分这 3 种类方法是非常简单的,即采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任何修改的方法为实例方法。 其中 @classmethod 和 @staticmethod 都是函数装饰器,后续章节会对其做详