问题标签 [cloneable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
298 浏览

java - 在 java 中克隆一个对象:org.objenesis.ObjenesisException: java.lang.NoSuchMethodException: newInstance [class java.lang.Class, int]

我正在使用 Espresso 来测试我的应用程序。

我还使用库uk.com.robust-it:cloningJava Deep Cloning Library1.9.2版来克隆对象。

如果我正在使用该应用程序,我没有异常,但是当测试运行时,我有以下异常:

有人也有这个例外吗?

这家伙和我有同样的问题...

https://groups.google.com/forum/#!topic/objenesis-dev/jdqWCwy5E78

0 投票
1 回答
282 浏览

java - 复制构造函数与可克隆。为什么我不应该考虑可克隆?

我正在阅读这个答案,他提到了一个链接,作者解释了为什么我们不应该使用 Cloneable。但是,仍然怀疑那里所说的内容

如果我有一个 Cloneable 数组,您会认为我可以运行该数组并克隆每个元素以制作该数组的深层副本,但我不能。您不能将某些内容强制转换为 Cloneable 并调用 clone 方法,因为 Cloneable 没有公共克隆方法, Object 也没有。如果您尝试强制转换为 Cloneable 并调用 clone 方法,编译器会说您正在尝试在对象上调用受保护的克隆方法。

但是,在这里我做到了

我能够创建 Cloneable 数组并且我做了作者所说的会导致错误或者我误解了作者的陈述?任何人,请帮助我理解选择复制构造器而不是克隆的原因。

0 投票
2 回答
201 浏览

javascript - jQuery 深度克隆不是递归的

我正在使用 js/jQuery 并试图创建一个真正的克隆 - 我目前正在为此使用 jQuery。我希望在多级对象中,即使是子对象也应该被深度克隆,但情况似乎并非如此。下面是我的测试代码和输出,这让我相信 jQuery 的深层克隆实际上并没有克隆所有的子对象。

有没有人写过真正的深度克隆函数,或者有没有办法让 jQuery 按预期工作?

代码:

控制台输出:

注意:我期望 1、0、1

0 投票
2 回答
934 浏览

java - 为什么使用同一包中的继承无法访问受保护的克隆()方法

我通过继承知道所有类都从 Object 类继承方法。类似地,如果我们用另一个类扩展一个类,它也继承方法。那为什么我们可以从其他类调用继承的受保护方法而不能从Object类调用继承方法

在上面的文件中,因为我可以使用 Testclass 的实例访问 someClassSpecificMethod 那么为什么我不能访问克隆方法?

0 投票
1 回答
577 浏览

java - 原型是反模式吗?

当 Joshua Bloch 提到 Java 中的 Cloneable 接口被破坏时,为什么使用clone()方法来促进对象创建的 Prototype 模式在 Java 开发中不被视为反模式?

“很遗憾,Cloneable 被破坏了,但它确实发生了。” - 约书亚布洛赫

0 投票
1 回答
723 浏览

java - Java:setter 应该制作“克隆”还是由调用者传递“新”副本?

如果我想确保在调用 setter 之后不能从外部修改对象,那么什么被认为是最佳和常见的做法?在代码中有详细的简单自我解释示例,有 2 个选项困境。

0 投票
3 回答
151 浏览

java - 在 java 的建议列表中看不到 clone() 方法?

当我打开Object class源代码时,我可以看到其中的clone()方法。

当我尝试查看clone()方法列表中的方法时没有显示(如果我创建objectasMyClassmyClass应用. dot operator它会给我 Eclipse IDE 中所有可用方法的建议,但它没有clone()在该列表中显示方法!!)

MyClass myClass = new MyClass(); myClass. // here I expect to see clone() as well but not

为什么会发生????

0 投票
3 回答
2159 浏览

java - 即使我们可以使用以下代码片段进行深度克隆,为什么还要实现 Cloneable

在上面提到的 ColoredCircle 类中,我们有一个名为 testClone() 的方法,它的工作原理与深度克隆完全相同。现在我对是否有必要实现 Cloneable 来克隆这一事实感到困惑?上面的程序是一种深度克隆吗?

0 投票
1 回答
141 浏览

java - 在同一个类中克隆函数

我正在用java进行一些模拟。我试图提前几步模拟树的一个节点,然后丢弃所有更改并返回原始状态。但是 clone() 并没有返回正确的结果。

节点类:

跟踪器类:

玩家等级:

注意:我不能为此使用 apache 函数,例如 org.apache.commons.lang.SerializationUtils

0 投票
3 回答
217 浏览

java - 使用可怕的克隆习语是克隆未知(子)类型对象的唯一方法吗?

我有一个类(“管理器”),它管理一个对象集合,这些对象都植根于一个共同的超类(“管理”)。manager 类有时需要复制选定的托管对象,但无法知道它是 Managed 的​​哪个子类。在我看来,最好的(如果不是唯一的)方法是使用 Cloneable。然后,对于我需要复制的任何托管对象,我调用 managedObject.clone()。当然,它必须正确实施。我已经阅读了许多关于“只使用复制构造函数”或为所有子类实现 myManagedSubClass.copy() 方法的警告。我看不到如何使用“真正的”复制构造函数,因为我需要知道类型:

如果我实现 copy() 方法,我认为应该是这样的:

但在我的使用中,我必须将返回值转换为预期的类型。如果我忘记在所有托管子类上实现 copy(),那么我最终会将超类强制转换为子类类型。我无法在 Managed 上设置受版权保护的可见性,因为这是直接复制的有效类。即使不是这种情况,我也必须在每个可以复制的子类上实现复制,并使用所有机制来处理可变字段的深层副本,或者建立我自己的某个通用名称的受保护方法的协议来处理所有问题该级别的超类引入的可变字段。

似乎尽管对 Cloneable 普遍感到愤怒和仇恨,但它是做我想做的最好的方式。我错过了什么吗?