当前位置: 首页 > 面试题库 >

为什么我们在Java中使用clone()方法?

夏飞掣
2023-03-14
问题内容

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


问题答案:

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

克隆 的想法是创建克隆对象的精确副本。因此,在最坏的情况下,此后您将使用两倍的内存量。实际上-
少了一点,因为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);


 类似资料:
  • 从外观上看-似乎创建了一个对象的克隆。如果是这样,那么对于实现可克隆接口(只有不可变对象是新的,因为可变对象有引用复制)的关注,哪一个是最好的,为什么? 我昨天实现了克隆,然后意识到我必须为非字符串/首字母元素提供自己的修改。然后我被告知我现在正在使用的。这两个实现似乎都提供了类似的功能。 谢谢

  • 本文向大家介绍为什么我们在jQuery中使用JSON.stringify()方法?,包括了为什么我们在jQuery中使用JSON.stringify()方法?的使用技巧和注意事项,需要的朋友参考一下 JSON或JavaScript Object Notation是一种轻量级的基于文本的开放标准,旨在用于人类可读的数据交换。使用JSON.stringify()方法将JavaScript对象转换为字符

  • 问题内容: rt.jar的必要性是什么? 问题答案: rt =运行时间 它包含所有Java运行时库。(必要)

  • 本文向大家介绍Java中为什么要用 clone?相关面试题,主要包含被问及Java中为什么要用 clone?时的应答技巧和注意事项,需要的朋友参考一下 在实际编程过程中,我们常常要遇到这种情况:有一个对象 A,在某一时刻 A 中已经包含了一些有效值,此时可能会需要一个和 A 完全相同新对象 B,并且此后对 B 任何改动都不会影响到 A 中的值,也就是说,A 与 B 是两个独立的对象,但 B 的初始

  • 问题内容: 通过它的外观- 似乎创建了一个对象的克隆。如果是这样的话,那么与实现Cloneable接口有关的担忧(只有不可变对象才是新对象,因为可变对象复制了引用)是最好的,为什么? 昨天我实现了cloneable,然后意识到我必须对非 String / Primative 元素提供自己的修改。然后,我被告知我正在使用哪个。两种实现似乎都提供了类似的功能。 谢谢 问题答案: Josh Bloch提

  • 问题内容: 有什么用的,并在Hibernate?因为我在互联网上发现的每个示例都将数据插入到单个表中,并使用两个不同的类来做到这一点。我的观点是,如果我使用单个表,那么我可以在单个类中映射所有列,那么为什么要使用不同的类。如果我们使用两个不同的表,则存在和hibernate关系。 问题答案: Hibernate 1中有两种对象。Value Object2 。实体 价值对象 是不能独立存在的对象。以