为什么无法克隆java.lang.Object?

ami*_*ngh 2 java clone

当我尝试克隆一个通用对象时,我得到编译时错误.为什么?

    Object obj=new Object();
    obj.clone();  // Here compile time error "The method clone() from the type Object is not visible"
Run Code Online (Sandbox Code Playgroud)

每个类都扩展了Object类,而clone方法在Object类中受到保护.

protected方法可以在同一个包中访问,也可以在subclasses所有类中使用java.lang.Object.

Lou*_*man 9

因为在课堂clone受到保护Object.事实并非如此public.

访问对象clone()方法的唯一方法是知道它具有一个具有公共clone()方法的编译时类型.

  • @amicngh我怀疑你是在`java.lang`包中,你不是在调用`this.clone()`而是`anObject.clone()`,所以你的第二点也不适用. (6认同)

Mar*_*nik 5

这将是克隆工作的最低限度:

public class SubObj implements Cloneable {
  public Object clone() { return super.clone(); }
}
Run Code Online (Sandbox Code Playgroud)