java 深克隆(深拷贝)与浅克隆(拷贝)详解
java深克隆和浅克隆 基本概念 浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所拷贝的对象,而不复制它所引用的对象。 深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。 实现java深复制和浅复制的最关键的就是 要实现Object中的clone()方法 。 如何使用clone()方法 首先我们来看一下Cloneable接口: 官方解释: 1:实现此接口则可以使用java.lang.Object 的clone()方法,否则会抛出CloneNotSupportedException 异常 2:实现此接口的类应该使用公共方法覆盖clone方法 3:此接口并不包含clone 方法,所以实现此接口并不能克隆对象,这只是一个前提,还需覆盖上面所讲的clone方法。 public interface Cloneable { } 看看Object里面的Clone()方法: clone()方法返回的是Object类型,所以必须强制转换得到克隆后的类型 clone()方法是一个native方法,而native的效率远远高于非native方法,