java学习之路----java类库------克隆技术

在java中支持java的克隆操作,直接使用Object的clone()方法即可。。。

               看源码:你会看到此方法是      protected Object clone() throws CloneNotSupportedException

以上方法是受保护的,所以子类必须覆写此方法

               package test;

public class CloneTest {
      private String name;
     
     
           public String getName() {
           return name ;
     }


      public void setName(String name) {
           this .name = name;
     }


     
     
           public CloneTest(String name) {
           this .name = name;
     }


@Override
           public Object clone() throws CloneNotSupportedException {
               // TODO Auto-generated method stub
               return super .clone();
          }


public static void main(String[] args) throws Exception {
     CloneTest cloneTest= new CloneTest("like" );
     
     
          CloneTest cloneTest2=(CloneTest)cloneTest.clone();//克隆对象
          cloneTest2.setName( "hello" );
     
     
     System. out.println( "克隆之前的对象---->" +cloneTest.getName());
     System. out.println( "克隆之后的对象---->" +cloneTest2.getName());
}
}

结果:

Exception in thread "main" java.lang.CloneNotSupportedException : test.CloneTest
     at java.lang.Object.clone( Native Method )
     at test.CloneTest.clone( CloneTest.java:27 )
     at test.CloneTest.main( CloneTest.java:35 )

那是因为克隆需要实现一个标示接口(没有具体的内容的接口)Cloneable



public class CloneTest implements Cloneable{
      private String name;
     
     
           public String getName() {
           return name ;
     }


      public void setName(String name) {
           this .name = name;
     }


     
     
           public CloneTest(String name) {
           this .name = name;
     }


@Override
           public Object clone() throws CloneNotSupportedException {
               // TODO Auto-generated method stub
               return super .clone();
          }


public static void main(String[] args) throws Exception {
     CloneTest cloneTest= new CloneTest ("like" );
     
     
           CloneTest cloneTest2=(CloneTest)cloneTest.clone(); //克隆对象
          cloneTest2.setName( "hello" );
     
     
     System. out.println( "克隆之前的对象---->" +cloneTest.getName());
     System. out.println( "克隆之后的对象---->" +cloneTest2.getName());
}
}



结果:
克隆之前的对象---->like
克隆之后的对象---->hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值