问题标签 [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 投票
3 回答
89 浏览

java - Java 复制构造函数和克隆不起作用

当我打电话时

nStav 的值将与 pomStav 相同...有人可以帮助我吗?我在代码中有更多方法,但它太长了,所以我没有像 findEmpty 等那样复制这里。

0 投票
0 回答
41 浏览

java - 为什么我可以选择在此处删除 throws 子句,即使我继承的接口定义了它?

有问题的接口是FileVisitor,它定义了这个方法:

我非常简单的实现是这样的:

在这段代码摘录中标记的地方<-- HERE,奇怪的是,IDEA(因为这是我选择的 IDE)告诉我声明该异常是不必要的......

由于 IDEA 并非没有错误,因此我决定尝试一下。我删除了异常并编译了!所以,IDEA 是对的。

然后我记得如果你实现Cloneable了你不需要 throw CloneNotSupportedException,这也是一个检查的异常,你的代码可以编译(当然,这不是规范的建议)。尽管Object's .clone()throws it

实际上,当您@Overrideclone() 并且不将其声明为 throwCloneableNotSupportedException时,它仍然可以编译。

但。

然后我尝试了这个:

Callable应该抛出Exception,但到目前为止它可以编译;但是,如果我:

那么这是一个编译错误...

什么是什么?


编辑好的,有很大的不同;Cloneable没有定义;_ 做。clone()Object

0 投票
3 回答
14665 浏览

java - 可克隆抛出 CloneNotSupportedException

error: unreported exception CloneNotSupportedException当我尝试编译它时我得到了(在第 4 行,而不是主要的)。据我所知,实现的全部目的Cloneable是摆脱异常。

  • 有没有办法在super.clone()不抛出或捕获异常的情况下使用?
  • 接口实际上有什么作用吗?
0 投票
2 回答
249 浏览

java - Java中克隆的目的

我正在浏览 Java 的“特殊”功能,并开始阅读有关克隆的内容。

所以目前我所理解的是克隆可用于获取对象的相同副本。为此,您需要实现 Cloneable 接口并覆盖 Object 的 clone 方法(这在 IMO 中真的很奇怪)

我的问题更多是针对 C++ 和 Java 之间的比较。当我们已经支持复制构造函数时,为什么需要一个单独的克隆方法。为什么克隆被认为是必须具有的特征,是否有历史原因?

PS:我不是在问“克隆”的需要,因为在 Java 中克隆对象的需要是什么,我问的是当 Java 已经支持复制构造函数时需要 Cloneable 和 clone 方法。

0 投票
5 回答
11524 浏览

java - 克隆如何比对象创建具有更高的性能

我试图了解 java 中的 clone() 方法下面发生了什么,我想知道如何比进行新调用更好

这是我的克隆代码,我想知道下面发生了什么,以及新调用之间的区别是什么。

这是我的客户代码

0 投票
3 回答
746 浏览

c++ - 具有 CRTP 可克隆类的无效协变类型

我正在尝试使用 CRTP 实现 Clonable 类。但是,我需要有一个具有纯虚拟克隆方法的抽象类,并被子类覆盖。为了实现这一点,我需要克隆函数返回一个协变返回类型。我在下面编写了这段代码,编译器对我大喊这个错误:

“B”类似乎是 AbstractClonable 的子类,甚至有两种方式!我该如何解决这个问题?非常感谢你。我尝试使用 clang 3.6 和 GCC 4.9.2

0 投票
4 回答
13908 浏览

struct - 如何克隆存储盒装特征对象的结构?

我编写了一个具有 traitAnimal和实现 trait 的结构的程序Dog。它还有一个AnimalHouse将动物存储为特征对象的结构Box<Animal>

它返回“鲍比:拉夫,拉夫!” 正如预期的那样,但如果我尝试克隆house编译器会返回错误:

#[derive(Clone)]我之前尝试添加struct AnimalHouse并得到另一个错误:

如何使结构可AnimalHouse克隆?一般来说,积极使用特征对象是惯用的 Rust 吗?

0 投票
5 回答
295 浏览

java - 我如何说服编译器对象是可克隆的(java)?

我想克隆给定的对象。

如果我这样做

这将不起作用,因为 o.clone() 受到保护。

如果我这样做

它也不起作用,因为 Cloneable 是一个空接口。

那么我如何让编译器相信你可以克隆 o?

0 投票
4 回答
586 浏览

java - 了解数组的克隆方法

我了解到,对于数组,该clone方法表现良好,我们可以使用它。但我认为数组持有的元素的类型应该已经实现了Cloneable接口。让我举个例子:

演示

我认为 5 应该打印两次。这样做的原因是通过克隆数组,我们正在创建新数组,其中包含对第一个数组持有的对象的引用(因为元素的类型没有实现Cloneable)。你不能把事情弄清楚吗?

目前尚不清楚数组元素的类型是否需要实现Cloneable

0 投票
0 回答
484 浏览

java - 使用 Cloneable 接口克隆复杂对象

我正在尝试使用 Cloneable 接口克隆一个复杂的对象。

我有一个名为 Resource 的超级对象,它有两个字段:

此外,此类 CollectionResource 扩展了具有复杂字段的 Resource,例如 Cursor、HashMap、DBHelper ... 等:

我需要克隆 CollectionResource 的一个实例,因为我需要使用不同的实例,所以我尝试简单地这样做:

它似乎工作......但我不明白为什么,因为我在 ResourceCollection 中使用复杂的对象,我没有在我的源代码上实现任何类型的深度克隆......

为什么它在没有深度克隆的情况下工作?为什么像 DBHelper、HashMap、Cursor 这样的复杂对象在没有深度克隆的情况下被克隆?我怀疑我做得不对,我会在不久的将来发现错误。

谢谢