CLONE的默认实现是浅拷贝  clone(){return (object)super.clone();}。可不可以将(object)super.clone()换成object.clone()啊?为什么还要进行强制转换呢

解决方案 »

  1.   

    因为super.clone()返回类型是大概是void  如果要返回Object 当然要进行强制转换
      

  2.   

    你如果要自己覆盖Object的clone方法,那一般来说肯定是要返回你自己需要类型的克隆对象
    比如你有个User类,要实现clone方法,那你肯定是要返回一个克隆的User对象
    所以你如果直接用
    super.clone();
    那就只是调用了Object类的clone方法,返回一个Object类型的对象,而不是你要的User对象,所以这个时候就需要强制转型为(User)super.clone();
    如果你就是要返回Object类型,那当然可以将强制转型去掉。