首先谢谢大家,兄弟我自认为理解clone()机制,
我的疑问是object.clone()是个早已写好的库对象的方法,
当我写的mytest.clone(mytest继承自object)调用super.clone()后super.clone()把我写的mytest类中我自己定义的变量进行按位复制,   那么object.clone()是如何知道我定义了什么变量呢?
难道java还有预知未来的特性???????

解决方案 »

  1.   

    src.zip里的object.java的clone方法是个native 有什么办法查看原代码??
      

  2.   

    没看过 clone()方法的源码,不过猜想可能在clone()方法中,遍历了一次所有调用 Object.clone()方法的对象,然后取出此对象的属性进行按位复制.也不是没有可能啊
      

  3.   

    其实就是对这个类的所有变量进行copy
    如果是基本类型的就直接cp值,
    如果是类对象的就cp引用(也就是指针)
    所以写自己的clone时,得注意是否要进行深cp
      

  4.   

    src.zip里的object.java的clone方法是个native 有什么办法查看原代码??
     下载java SE的源代码
      

  5.   

    clone方法是要自己写的吧。因为牵涉到clone的深度问题。所以不是每个对象都会
    如你所愿的那样被复制下来。否则仅仅是浅度clone
      

  6.   

    Object中的clone只是把你的对象所占的那块内存一五一十的复制一份而已。JVM可以知道对象所占的内存大小,而这种bitwise的复制完全不需要了解对象的实际定义,反正对于复制过程来说,只是内存中的几个字节而已。问题就在于,bitwise复制之后,新对象中的引用仍然指向原对象引用的对象,这种浅层复制可能会导致一些问题。