Tag: clone

我们应该使用clone或BeanUtils.copyProperties以及原因

通过它的外观 – BeanUtils.copyProperties似乎创建了一个对象的克隆。 如果是这种情况,那么关于实现Cloneable接口的问题(只有不可变对象是新的,因为可变对象有复制的引用)这是最好的,为什么? 我昨天实现了cloneable,然后意识到我必须为非String / Primative元素提供自己的修改。 然后我被告知我正在使用的BeanUtils.copyProperties 。 这两种实现似乎都提供了类似的function。 谢谢

java:如何使用clone()以及如何使用cast检查

这段代码: class RawStringIterator { java.util.Stack stateStack = new java.util.Stack(); RawStringIterator(RawStringIterator i) { stateStack = (java.util.Stack) i.stateStack.clone(); } /* … */ } 给了我这个警告: Type safety: Unchecked cast from Object to Stack 我想我可以忽略这里的警告。 但我想知道如何使用clone()一般? 每次使用clone()时,我是否总是必须使用@SuppressWarnings(“unchecked”) clone() ? 或者我应该总是进行完全冗余的额外检查吗?

从java.lang.Object访问clone()

这是我无法理解的东西。 在java.lang.Object , clone()是使用protected modifier定义的。 根据定义,它可以通过名称在其自己的类定义中访问,通过名称在从它派生的任何类中,并通过名称在同一个包中的任何类的定义中。 这里的Sample类在另一个包中,显然它不能从Object类访问clone() 。 但是,当Sample从Object隐式派生时,为什么它无法访问它? 该定义并未说明它满足两个条件(在同一个包内,也是一个子类)。 public class Sample { public Object foo() throws CloneNotSupportedException { … return someObject.clone(); } }

Effective Java:分析clone()方法

请考虑以下有效Java项目11(明智地覆盖克隆),其中Josh Bloch解释了clone()合同的错误。 这份合同存在许多问题。 “没有被称为构造函数”的规定过于强大。 一个行为良好的克隆方法可以调用构造函数来创建正在构建的克隆内部的对象。 如果类是final,clone甚至可以返回由构造函数创建的对象。 有人可以解释Josh Bloch在第一段中所说的“如果类是final ,则clone甚至可以返回由构造函数创建的对象”。 final与clone()有什么关系?

如何制作ArrayList的分离副本?

可能重复: Java:如何克隆ArrayList但是也克隆了它的项目? 我有一个示例程序,如下所示: ArrayList orginalInvoice = new ArrayList(); //add some items into it here ArrayList copiedInvoice = new ArrayList(); copiedInvoice.addAll(orginalInvoice); 我以为我可以修改copiedInvoice项目,它不会影响originalInoice这些项目。 但是我错了。 如何对ArrayList进行单独的复制/克隆? 谢谢