`

java.lang.Cloneable

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

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

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

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


    上面的话来自Java Doc,从这段话可以得出2个结论:
必须实现Cloneable接口才有资格调用Object.clone()方法
实现Cloneable接口只是可克隆的条件之一,要可克隆,还必须改写 Object 的clone()方法,因为Object.clone()方法是protected的,必须进行覆盖并改为public。
其它注意事项:如果需要克隆的类引用到了其它的类的对象,甚至这个对象也引用到了别的对象,那么在必要情况下,你需要将这个对象树进行完整的克隆。
分享到:
评论

相关推荐

    java.lang包介绍

    Java编程语言的基础构建块之一是`java.lang`包,它被自动导入到每个Java程序中,无需显式导入。这个包包含了许多核心类和接口,是编写任何Java应用程序不可或缺的部分。`java.lang`包中最基本的类是`Object`,它是...

    java.lang研究

    《深入解析java.lang》 Java语言的核心库之一就是`java.lang`包,它包含了Java程序设计中最基础的类和接口,这些类和接口是每个Java应用程序必不可少的。由于`java.lang`包在编译时自动导入,因此程序员无需显式...

    java_lang包详解.pdf

    《java_lang包详解》 Java语言的核心库之一就是java.lang包,它包含了Java程序中最基础、最核心的类和接口。由于这个包是自动导入到每个Java程序中的,所以理解和掌握其中的类和接口对于编写Java代码至关重要。下面...

    spring4.0 API

    java.util.HashMap,V> (implements java.lang.Cloneable, java.util.Map,V>, java.io.Serializable) java.util.LinkedHashMap,V> (implements java.util.Map,V>) org.springframework.core.annotation....

    NC总帐API帮助文档

    java.io.Serializable, java.lang.Cloneable, java.util.EventListener, nc.vo.gl.vouchervaluechange.ValueChangeListener, nc.vo.glpub.IVoAccess -----------------------------------------------------------...

    Java API接口详述.rar

    2. `java.lang.Cloneable`: 标记接口,表示对象可以被克隆。 3. `java.lang.Runnable`: 实现此接口的类可以作为线程执行的任务。 4. `java.util.List`, `Set` 和 `Map`: 这些接口定义了集合框架的核心接口,提供数据...

    java-lang包详解

    【java-lang包详解】 在Java编程语言中,`java.lang`包是所有Java程序的基础,因为它包含了许多核心类和接口,这些类和接口是编写任何Java应用程序所必需的。由于这个包是自动导入的,因此程序员无需在代码中显式地...

    JDK中的设计模式

    在JDK中,`java.lang.Object#clone()`是一个典型示例,它支持浅克隆,要求实现`java.lang.Cloneable`接口。 ##### 单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问点。JDK中的一些例子是: - `java...

    java源码阅读之java.lang.Object

    Java源码阅读之java.lang.Object Java中的Object类是所有类的父类,任何类都默认继承Object。Object类提供了多种方法,以下是其中一些重要的方法: 1. clone方法:保护方法,实现对象的浅复制,只有实现了...

    java-java-lang包.pdf

    Java编程语言中的java.lang包是一个核心包,它提供了Java语言运行时的基础类库,包含了Java程序运行的基本数据类型、异常处理类以及一些用于系统级别的工具类和接口。java.lang包中的类和接口不需要程序员显示地导入...

    java编程常见问题

    14. **java.lang.CloneNotSupportedException**: 当对象没有实现`Cloneable`接口并且尝试调用`clone()`方法时,会抛出此异常。 15. **java.lang.EnumConstantNotPresentException**: 尝试访问的枚举常量在枚举类型...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在Java中,我们可以使用`java.lang.Cloneable`接口和`Object.clone()`方法来实现对象的浅复制,或者利用序列化和反序列化实现深复制。这种模式在需要频繁创建相似对象的场景下非常有效,节省了时间和内存。 2. **...

    设计模式Java版.rar

    Java中的`java.lang.Cloneable`接口和`clone()`方法用于实现此模式。 6. **适配器模式**:使两个不兼容的接口能够协同工作。在Java中,可以通过继承或组合实现。 7. **装饰器模式**:动态地给一个对象添加一些额外...

    java设计模式(绝对高清和完整)

    在Java中,`java.lang.Cloneable`接口和`Object.clone()`方法可以实现此模式。 6. **装饰器模式**:动态地给一个对象添加一些额外的职责。在Java中,I/O流的处理就是装饰器模式的一个经典应用。 7. **适配器模式**...

    JAVA设计模式

    Java中提供了`java.lang.Cloneable`接口来实现对象的浅复制和深复制。 6. **观察者模式(Observer)** 观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动...

    23种设计模式的java实现源代码.rar

    Java中可以利用`java.lang.Cloneable`接口和`clone()`方法实现。 6. **适配器模式(Adapter)**:使两个不兼容的接口能够协同工作。在Java中,可以使用类适配器或对象适配器模式,通过继承或组合实现。 7. **桥接...

    JAVA中常用类的常用方法.docx

    要进行“克隆”的对象所属的类必须实现 java.lang.Cloneable 接口。 2. equals(Object obj) 方法:比较引用类型数据的等价性。等价标准:引用类型比较引用,基本类型比较值。存在特例:对 File、String、Date 及...

Global site tag (gtag.js) - Google Analytics