0 0

clone方法为什么必须实现Cloneable接口25

Java 中 如果clone为什么必须实现Cloneable接口(已知会抛出CloneNotSupportedException异常)

Cloneable中什么方法也没有,它仅仅是个标识接口.这个标识在什么地方会起到作用? 是如何起到作用?

2008年12月08日 16:23

3个答案 按时间排序 按投票排序

0 0

采纳的答案

引用
Java 中 如果clone为什么必须实现Cloneable接口


Cloneabel接口的目的是作为对象的一个mixin接口(mixin接口是为了说明自己可以提供某些方法。),用来说明你的对象是允许复制。

引用
已知会抛出CloneNotSupportedException异常

引用
是如何起到作用?


如果一个类实现了Cloneable,那么对象的clone方法返回这个对象的逐域拷贝,否则的话,就会抛出你那个异常。

在je里面找了一上。http://onlylove.iteye.com/blog/265113
这个好像有你需要的更进一步的东西,偶没认真看了。

2008年12月09日 21:34
0 0

1 Cloneable是标示接口与java.io.Serializable类似,用于告知JVM该对象实现clone。并且super.clone()可以返回一个复制。
2 很多时候,会把protected的clone方法修改为public,暴露给其他人可以使用

详细信息,建议仔细阅读JDK的文档

2008年12月08日 23:41
0 0

我个人认为跟serialize 是一个道理, 防止用户不知情的情况下, 出此类问题的bug.  底层在复制的时候, 也许能起到检查的作用。

2008年12月08日 22:30

相关推荐

    学习Java实验7抽象类和接口.pdf

    为了实现对象内容深拷贝,我们还需要在 Name 类中实现 Cloneable 接口,并实现 clone 方法。 四、实验结论 通过本实验,我们学习了 Java 中的抽象类和接口的概念和使用方法,并且深入探讨了 Cloneable 接口和 ...

    bigcoder84#study-notes#_4Object中的clone方法1

    Object类中的clone方法clone()方法的作用克隆方法用于创建对象的拷贝,为了使用clone方法,类必须实现java.lang.Cloneable接口

    Java中clone方法共6页.pdf.zip

    2. **Cloneable接口**: - Java中的`Cloneable`接口是一个标记接口,没有定义任何方法。当一个类实现了`Cloneable`接口,表示该类的对象可以被克隆。如果不实现这个接口,调用`clone()`方法会抛出`...

    java Clone

    // 假设UnCloneA也实现了Cloneable接口 return o; } ``` 在实际编程中,深克隆可能涉及复杂的对象图,需要对每个引用的对象进行检查并逐个复制。如果对象的成员变量是不可克隆的(如`final`字段或不可克隆的第三...

    Java实验7抽象类和接口.pdf

    在实验中,我们实现了 Cloneable 接口,并提供了一个 clone 方法,以便于复制 Circle 对象的内容。我们还学习了浅拷贝和深拷贝的概念,并学习了如何消除浅拷贝的方法。 四、多态性 多态性是一种编程技术,它允许多...

    clone()方法示例(对象克隆)_对象克隆_nervouse78_源码

    1. **实现Cloneable接口**:`Cloneable`接口在Java中是一个标记接口,表示该类的对象可以被克隆。虽然它没有定义任何方法,但实现这个接口是调用`clone()`的前提。 2. **重写`clone()`方法**:默认的`clone()`方法...

    Clone详解.doc

    - 实现`Cloneable`接口是调用`clone()`的前提,否则会抛异常。 - 重写`clone()`方法时,需要处理非基本类型的成员变量,确保它们也能够被正确地复制。 总的来说,Java中的克隆机制提供了复制对象的能力,这在很多...

    Java深浅clone

    在Java中,如果一个类想要支持`clone()`方法,它必须实现`Cloneable`接口。这个接口没有任何方法定义,只作为一个标记接口使用。当尝试对未实现`Cloneable`接口的对象调用`clone()`方法时,会抛出`...

    clone 深度克隆对象

    在Java中,实现深度克隆通常有两种方式:一是通过实现Cloneable接口并重写Object类的clone()方法;二是使用序列化和反序列化技术。前者需要特别注意的是,只有实现了Cloneable接口的类才能调用默认的clone()方法,...

    编程语言java对象复制.pdf

    在给出的内容部分中,通过具体的Java代码示例,讨论了在Java中实现对象复制的机制,特别是通过实现Cloneable接口和重写Object类的clone方法来完成对象的浅复制与深复制。 知识点一:Java对象复制的基本概念 在Java...

    Java的clone方法[归类].pdf

    注意,如果没有实现`Cloneable`接口,调用`clone()`方法会抛出`CloneNotSupportedException`异常。 示例代码中展示了如何使用`clone()`方法创建`A`类对象的副本`a2`,这样修改`a2`不会影响到`a1`: ```java A a1 =...

    java_clone用法

    // 假设User类也实现了Cloneable接口 return clonedAccount; } ``` #### 七、何时选择深拷贝 并非所有的引用类型都需要进行深拷贝。如果引用的对象是不可变的(如`String`),则无需深拷贝,因为它们的状态无法...

    JAVA对象clone方法代码实例解析

    JAVA对象clone方法是JAVA编程语言中的一种复制对象的方法,通过实现Cloneable接口和重写clone方法,可以实现对象的浅复制或深复制。在本文中,我们将通过示例代码详细介绍JAVA对象clone方法的代码实例解析。 首先,...

    java克隆对象(两种方法)

    java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)

    java clone的小例子

    要使用`clone()`方法,一个类需要实现`Cloneable`接口。这个接口没有定义任何方法,但它的存在表明这个类允许被克隆。如果一个类没有实现`Cloneable`接口,然后尝试调用`clone()`,系统会抛出`...

    java clone

    1. 实现`Cloneable`接口:这是Java中定义的一个标记接口,没有包含任何方法。当一个类实现了这个接口,表明它允许被克隆。 2. 覆盖`clone`方法:在自定义类中,我们需要重写`clone`方法以实现特定的克隆逻辑。默认的...

    clone()示例源码

    `Cloneable`接口需要被实现,因为只有实现了这个接口的类才能调用`clone()`方法。`CloneNotSupportedException`需要被抛出,尽管在Java中`clone()`方法总是会抛出这个异常,但仍然需要在方法签名中声明它,这是良好...

    关于java clone的一些基本的概念

    1. `clone`方法抛出`CloneNotSupportedException`,这意味着如果你尝试克隆一个没有实现`Cloneable`接口的对象,将会抛出异常。 2. 默认的`clone`方法创建的对象具有与原对象相同的类,且所有的字段值都相同(原始...

    Java Clone深拷贝与浅拷贝的两种实现方法

    三、为什么使用 clone 方法 使用 clone 方法可以实现对象的深拷贝和浅拷贝,它可以帮助我们在编程中方便地复制对象。但是,我们需要注意的是,clone 方法的使用需要遵守一定的规则,例如,需要实现 Cloneable 接口...

Global site tag (gtag.js) - Google Analytics