Tag: 克隆

这个clone()有什么问题?

我编写了这个克隆方法,当Employee类的父类是抽象的,而父类中的clone()方法是abstract.I想用这个代码复制Employee的对象的原始数据类型,而不是复制每个原始数据单独键入,但此代码与我调用clone()方法的行有问题。 (此代码在Employee类中) public Object clone() { Object obj = new Object(); Object object = obj.clone(); //Emphasis here return object; } 错误是:Object类型的方法clone()不可见。 但是我的Employee类在类层次结构中,可以访问Object类中的protected clone()方法。 这是我简单的Employee类: public class Employee extends Person implements Cloneable { private int ID; public Employee() { ID = 0; } public void setID(int ID) { this.ID = ID; } public int getID() { […]

用Java复制对象

我有一个需要用Java复制的对象。 我需要创建一个副本并在其上运行一些测试而不更改原始对象本身。 我假设我需要使用clone()方法,但这是受保护的。 在网上做了一些研究之后,我可以看到这可以用我class上的公共方法覆盖。 但我找不到如何做到这一点的解释。 怎么可以这样做? 此外,这是实现我需要的最佳方式吗?

用generics克隆

曾几何时有一堂课: public class Scope<C extends Cloneable & Comparable> implements Comparable<Scope>, Cloneable, Serializable { private C starts; private C ends; … @SuppressWarnings(“unchecked”) @Override public Object clone() { Scope scope; try { scope = (Scope) super.clone(); scope.setStarts((C) starts.clone()); // The method clone() from the type Object is not visible scope.setEnds((C) ends.clone()); // The method clone() from the […]

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

为什么我们在Java中使用clone()方法? (请给出关于内存约束的答案。)这会减少内存使用量吗? 如果是,那怎么样? 那会降低内存泄漏的影响吗?

clone():ArrayList.clone()我以为是浅拷贝

ArrayList a=new ArrayList(); a.add(5); ArrayList b=(ArrayList)a.clone(); a.add(6); System.out.println(b.toString()); 在上面的代码中,我认为clone()执行浅拷贝。 所以, b和a应该指向相同的内存位置。 但是,当我执行b.toString() ,答案只有5 。 如果clone()执行浅拷贝,为什么6也不显示?

如何在java中克隆多维数组?

编辑2:下面是一个基于DuffyMo响应的代码片段,演示了如何使用System.arraycopy克服多维数组克隆的局限性。 import java.util.Arrays; public class Randar { public static int[][] arrayMaster = {{6,1}, {10,1}, {1,1}}; private static int[][] arrayChanges = new int[arrayMaster.length][2]; public Randar () { } public static void main(String[] args) { arrayChanges[0][0] = 0; resetArrays(arrayChanges, arrayMaster); arrayChanges[0][0] = 0; System.out.format(“arrayMaster: %s, arrayChanges: %s”, Arrays.deepToString(arrayMaster), Arrays.deepToString(arrayChanges)); } public static void resetArrays(int[][] arrayChanges, int[][] arrayMaster) […]

克隆如何在引擎盖下工作?

克隆不会调用对象构造函数来创建对象的副本。 那么克隆使用什么算法呢? 我正在寻找本机方法克隆的实现细节。 任何指针将不胜感激。 请注意,我知道克隆的缺点。