首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

深入了解java clone

2012-11-13 
深入理解java clonejava类型分为两大类基本类型如int byte等基本类型和引用类型string object等clone的应

深入理解java clone
java类型分为两大类  基本类型如int byte等基本类型和引用类型string object等

clone的应用场景:如果一个对象内部有可变实例的话 那么对于调用方法不应该直接返回对象 防止CODE改变其内部结构 应该返回对象的clone

对于应用类型 默认实现super.clone只能帮我们实现浅复制    但在考虑clone时 基本类型和不可分割的应用类型 在实现默认clone时都是独立的复制一个新的对象 不会影响
原类型 即深复制


实现clone三部曲
1.实现cloneable接口
2.调用super.clone拿到一个对象
3.把浅复制的引用指向新的克隆体

public class Clone{    public static void main(String[] a) throws CloneNotSupportedException    {        CloneTest test=new CloneTest();        test.employ.name="jack";        System.out.println(test.employ.name);        CloneTest clonetest=(CloneTest)test.clone();        clonetest.employ.name="new";        System.out.println(test.employ.name);        System.out.println(clonetest.employ.name);    }}class Employ implements Cloneable{    String name = null;        int age;        Employ()    {            }    @Override    public Object clone()        throws CloneNotSupportedException    {        return super.clone();    }    }class CloneTest implements Cloneable{    Employ employ = new Employ();        int ages = 30;        CloneTest()    {    }        @Override    public Object clone()        throws CloneNotSupportedException    {        CloneTest temp=new CloneTest();        temp.employ=(Employ)temp.employ.clone();        return temp;//原先直接为return super.clone()  如此将Employ重新复制  实现深复制    }}



结果:jack
jack
new

热点排行