java.lang.Object.clone()使用方法

    今天无聊,看到prototype模式,里面实现就是使用clone()方法实现,于是赶紧记录一下。clone的使用类似与c++中"="赋值运算符重载,会出现"浅复制"和"深复制"的概念。

    clone()方法

              class A implements Cloneable{    //must implements Cloneable interface
                  public Object clone(){    //overload & use public to declare
                      CloneClass o = null;
                      try{
                          o = (A)super.clone();    //invoke super.clone()
                      }catch(CloneNotSupportedException e){
                          e.printStackTrace();
                  }
                  return o;
               }

在java中解决浅复制问题方法如下:

    1.假如现在对象B1(class is B)要被复制为对象B2,并且对象B1中包含了一个对象引用A1(class is A),那么类B需要实现clone(),同时类A也需要实现clone(),然后在类B中,使用B.A = (A)A.clone();即对B中每一个引用也使用clone进行复制。

    2.类StringBuffer为final类型,并且没有实现clone()方法,所以不能进行上面方法实现深度复制,一种可行的方法是先判断该引用是不是StringBuffer,如果是,使用B.strBuff = new StringBuffer(strBuff.toString());

    3.类String虽不是简单数据类型,但却可以自动实现深度复制,假象,挺好的。   

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值