请问java中的对象克隆一般用在什么时候????虽然也可以用输入输出流来实现但这克隆一般用在什么情况下???还有关于深度克隆的问题???
哪位大哥讲解一下!!!

解决方案 »

  1.   

    我见到的一种情况是,方法需要返回引用,但是又不希望用户对该引用指向的对象进行修改。这时候直接返回clone()的结果。
      

  2.   

    比如这个:class Test {
        private static int[] value;
        static {
            value = new int[]{1, 2, 3, 4, 5};
        }
        public static final int[] getValue() {
            return value.clone();
        }
    }我直接返回Test中的数组的话,外面有可能对这个数组造成破坏,所以返回clone的。
      

  3.   

    我刚学,对clone不是很了解。
      

  4.   

    clone一般用于一些对象在创建时很复杂,或者你不知道它是怎么创建出来,就用它的clone方法。
    这个让我想起Prototype模式(即原型模型),它的定义好像是这样:
    一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:
    通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。打个比方:你去到一家面包店,看中了一个蛋糕,但你不知道它的名字是什么,你会用手指指着那蛋糕对销售员说:"我要这种蛋糕!"这个就是我们日常生活中的原型模型了,你指着那块蛋糕,然后销售员就克隆一块一模一样的蛋糕给你啦。