Java cloneable_java浅克隆和深克隆
先来看看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
踩
分享到:
2010-04-23 13:46
浏览 5671
评论
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184076.html原文链接:https://javaforall.cn
相关文章
- java cloneable 接口_Cloneable 接口 记号接口(标记接口)「建议收藏」
- java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?
- java volatile关键字的作用_Java并发编程彻底搞懂volatile关键字「建议收藏」
- java helloworld源代码_Java Hello World源代码剖析
- java calendar计算时间差_Java Calendar 计算时间差
- java出现中文乱码_JAVA中文显示乱码问题「建议收藏」
- db4o java,db4o Java版性能测试评估
- Java中高级程序员必须要掌握的Spring Aop编程(下篇)
- 浅析Java多态_JAVA多态
- myeclipse8.5注册码怎么用_java生成不重复验证码
- 【说站】java中NIO是什么
- java notifyall_Java Thread notifyAll()方法[通俗易懂]
- Java 程序控制结构(4)
- java cloneable_java.lang.Cloneable的理解「建议收藏」
- java中遍历数组的方法_java遍历object数组
- java使用xquery_如何使用Java XQuery
- NDK开发(三) :JNI访问Java变量和方法
- Java 移动 ArrayList 中的元素的方法
- Java服务异常排查定位大图
- 一款漂亮的Java行为验证码
- Java 服务器获取请求的IP方法详解编程语言
- java基础学习总结——多态(动态绑定)详解编程语言
- 为Java EE的新名字投票详解编程语言
- Java与Oracle联手构建数据库新世界(java和oracle)
- Java里的Redis事务处理(redis事务java)
- 处理解决Redis中Java的过期处理问题(redisjava过期)
- 机制Redis与Java的过期机制研究(redisjava过期)
- 缓存『Redis Java实现高效利用过期缓存』(redisjava过期)
- 时间设置解决Java使用Redis设置过期时间的方法(redisjava过期)
- Java面试中的Redis题目剖析(java面试题redis)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- Linux系统下Java软件环境搭建指导(linux java软件)
- Java应用在Linux上乱码的原因及解决方法(java linux乱码)
- Linux上善用Java:实现智能开发(linux 运行java)
- Java连接Oracle实现简单快捷的数据传输(java联结oracle)
- 构建基于Java和Oracle的强大技术栈(java架构oracle)