java - 如何克隆从抽象类扩展的对象?

标签 java object interface clone abstract

我认为调用“super.clone()”不会转到 Cloneable 类,而是转到抽象类..

public class Mainprogramm { 
  Test original = new Test();
 Test copy = original.getClone();
}

public class Test extends AbstractClass implements Cloneable{
  public Test getClone(){
  try
    {
        return (Test) super.clone();
    }
    catch(CloneNotSupportedException a)
    {   
        return this;
    }
  }
}

public class AbstractClass implements Cloneable{
  //no abstract clone-method...
}

最佳答案

您的想法错误:

我认为调用“super.clone()”不会转到 Cloneable 类,而是转到抽象类。

重点是:Cloneable 只是一个接口(interface)。它的存在做了完全不同的事情;请参阅javadoc :

类实现 Cloneable 接口(interface),以向 Object.clone() 方法指示该方法对该类的实例进行逐字段复制是合法的。 p>

换句话说:你最好研究一下你打算使用的概念;而不是仅仅写下一些代码并想知道它可能会做什么。请参阅here例如。

从这个意义上说:是的,super.clone() 确实“转到”抽象基类;但是:这是您实际上可以调用clone()的唯一地方。

关于java - 如何克隆从抽象类扩展的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41924955/

相关文章:

Python 在特定条件下停止嗅探

java - org.modelmapper 中的标记化

java - Groovy 每个方法都返回不正确的结果

java - Guava ListMultimap中put()和get()操作的时间复杂度是多少?

javascript:将 key 从 for 循环传递到另一个函数失败

javascript - 如何使用数组包含函数检查对象数组中的对象相等性?

java - 编写一个程序来搜索数组以找到第一个奇数

java - 如何设计这个方法的签名

php - 类不返回接口(interface)实例 PHP

C#接口(interface)问题