Cloneable

作者: 抬头挺胸才算活着 | 来源:发表于2021-12-24 17:38 被阅读0次
  • 如何实现Cloneable接口?
    1、让该类实现java.lang.Cloneable接口;
    实现Cloneable接口后对象才可以使用super.clone(),不然直接使用会报CloneNotSupportedException异常。
    2、重写(Override)Object的clone()方法;
    3、一般会调用super.clone()

  • 浅拷贝与深拷贝
    super.clone()只能复制基本类型和引用类型的引用,因此是浅拷贝。

  • 如何实现深拷贝
    在浅拷贝的基础上调用引用类型的clone方法或者自己new对应的类型。

  • 为什么实现Cloneable接口后对象才可以使用super.clone()
    clone是一个native方法,代码如下:
    可以看到该方法检查了当前类是否实现了Cloneable接口,如果没有调用到这里就会抛出异常

作者:木女孩
链接:https://www.zhihu.com/question/52490586/answer/130744569
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

#ifdef ASSERT
  // Just checking that the cloneable flag is set correct
  if (obj->is_array()) {
    guarantee(klass->is_cloneable(), "all arrays are cloneable");
  } else {
    guarantee(obj->is_instance(), "should be instanceOop");
    bool cloneable = klass->is_subtype_of(SystemDictionary::Cloneable_klass());
    guarantee(cloneable == klass->is_cloneable(), "incorrect cloneable flag");
  }
#endif

  // Check if class of obj supports the Cloneable interface.
  // All arrays are considered to be cloneable (See JLS 20.1.5)
  if (!klass->is_cloneable()) {
    ResourceMark rm(THREAD);
    THROW_MSG_0(vmSymbols::java_lang_CloneNotSupportedException(), klass->external_name());
  }

参考资料:
Java中Cloneable的使用

相关文章

  • Cloneable

    如何实现Cloneable接口?1、让该类实现java.lang.Cloneable接口;实现Cloneable接...

  • Cloneable

    Cloneable接口,JDK1.0版本引入 也是一个标记接口官方文档是这么说的一个类实现Cloneable接口,...

  • 10.21

    哪个类包含 clone 方法?是 Cloneable 还是 Object?java.lang.Cloneable ...

  • Cloneable接口

    Cloneable接口的官方解释 1.Cloneable属于标记接口,接口内部没有方法和属性。实现该接口的类的实例...

  • Cloneable相关

    18.7.191、Cloneable接口没有定义成员。2、想要使用Object提供的clone()方法,必须实现C...

  • Cloneable源码

    1、简介 1.1、英文注释 A class implements the Cloneable interface ...

  • Cloneable 接口

    浅拷贝(shallow clone)和深拷贝(deep clone) 浅拷贝是指拷贝对象时仅仅拷贝对象本身和对象中...

  • Cloneable接口

    前置知识 Java在处理对象和变量时是不同的.变量传入函数实际上是引用传入函数内,在函数内的变量和函数外传入的变量...

  • Cloneable接口

    2020-4-7 Cloneable接口是一个标记接口: 一个典型的示例: 对于Cloneable接口,有以下需要...

  • Android设计模式(三)- 原型模式

    目录 定义 使用场景 UML类图 简单实现 使用Cloneable接口 不实现Cloneable接口 问题 深拷贝...

网友评论

      本文标题:Cloneable

      本文链接:https://www.haomeiwen.com/subject/gfglqrtx.html