在JDK类中有个Cloneable的接口,代码如下
package java.lang;public interface Cloneable { 
}jdk上说名如下:
一个实现 Cloneable 接口的类用来指明类 Object 中的 clone 方法,可以合理实现该类实例的拷贝复制问题:
1.但是Cloneable 类中一个方法都没有怎么就去掉用Object 中的 clone 方法了呢?2.Object 中的 clone 方法声明如下 
       protected native Object clone() throws CloneNotSupportedException;
就声明了一个native 方法,具体是怎么实现这个拷贝的呢?

解决方案 »

  1.   

    可克隆代码class MyClass{private int id;
    private String name;public MyClass(){
    id=1;
    name="HaryPorter";
    }public MyClass(int id,String name){
    this.id=id;
    this.name=name;
    }public void display(){
    System.out.println("Id ="+id+"\n"+"Name="+name);
    }
    }
    // hackers code to clone the user classpublic class Hacker extends MyClass implements Cloneable {public static void main(String[] args){
    Hacker hack=new Hacker();
    try{
    MyClass o=(MyClass)hack.clone();
    o.display();
    }
    catch(CloneNotSupportedException e){
    e.printStackTrace();
    }
    }
    }
      

  2.   

    thinking in java 第2版我看过了里面说的是浅拷贝和深度拷贝,这个我知道,但是就不明白为什么实现了Cloneable 的类就可以克龙呢?如果我同样写个Cloneable1 接口我去实现它它为什么就不可以克龙呢?有谁能说详细点啊
      

  3.   

    TIJ第2版我看过一边包括附录但是书上并没有说明程序地层是怎么实现的。
      

  4.   

    native 方法调用的是dll中封装的函数