为什么在Java中使用clone()方法? (请给出有关内存限制的答案。)这会减少内存使用吗?如果是,那怎么办?这样会减少内存泄漏的影响吗?

最佳答案

除了不使用克隆外,实现一个复制构造函数,还询问了内存限制。

克隆的想法是创建克隆对象的精确副本。因此,在最坏的情况下,此后您将使用两倍的内存量。实际上-少了一点,因为String经常被嵌入并且(通常)不会被克隆。即使由clone方法/copy构造函数的实现者来决定。

这是带有复制构造函数的类的简短示例:

public class Sheep {
  private String name;
  private Fur fur;
  private Eye[2] eyes;
  //...

  // the copy constructor
  public Sheep(Sheep sheep) {
    // String already has a copy constructor ;)
    this.name = new String(sheep.name);

    // assuming Fur and Eye have copy constructors, necessary for proper cloning
    this.fur = new Fur(sheep.fur);
    this.eyes = new Eye[2];
    for (int i = 0; i < 2; i++)
       eyes[i] = new Eye(sheep.eyes[i]);
  }
}

用法:
Sheep dolly = getDolly();  // some magic to get a sheep
Sheep dollyClone = new Sheep(dolly);

关于java - 为什么我们在Java中使用clone()方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5802118/

10-11 10:56