- 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
最佳实践是不公开对象(实体)的内部引用。因此,如果某个对象的字段类型为java.util.Date,那么例如该字段的获取方法应返回的不是原始日期,而是其副本。
但是对于java.util.Date,有两种创建该副本的常用方法:
克隆:(Date) originalDate.clone()
通过构造函数
复制
我的问题是,哪种方法更好,为什么?
……继续阅读 »
我有以下测试:
import static org.junit.Assert.assertEquals;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
import org.junit.Test;
public class ……继续阅读 »
在以下代码中(从Java Concurrency in Practice第2章第2.5节, list 2.8复制):
@ThreadSafe
public class CachedFactorizer implements Servlet {
@GuardedBy("this") private BigInteger lastNumber;
……继续阅读 »
我正在使用以下代码克隆我的数组:
aproximatedContours = cloneList(contours);
方法主体:
public static ArrayList<MatOfPoint> cloneList(ArrayList<MatOfPoint> contours) {
ArrayList<Ma……继续阅读 »
This question already has answers here:
Understanding Object.clone() in Java
(4个答案)
2年前关闭。
我有一个带有几个成员变量的类,其中一个是DefaultTableModel。我的类的构造函数使用MySQL ResultSet填充DefaultTableModel。……继续阅读 »
java.util.Calendar.clone()返回“…具有相同属性的新日历”,并返回“此日历的浅拷贝”。
在SO上,这似乎不是here的浅拷贝。该问题被标记为与语言无关的,而 Java似乎没有遵循与语言无关的定义。当我逐步执行代码时,我注意到结构和元素被复制到了这个新对象,而不仅仅是语言不可知的结构。
在Java中,什么是浅拷贝?
它与Ja……继续阅读 »
如果我在类型A的对象数组上调用clone()方法,它将如何克隆其元素?副本将引用相同的对象吗?还是会为它们每个调用(element of type A).clone()?
解决方案如下:
clone()创建一个浅拷贝。这意味着将不会克隆元素。 (如果他们没有实现Cloneable怎么办?)
您可能需要使用Arrays.copyOf(..)而不是c……继续阅读 »
如何克隆ArrayList并在Java中也克隆其项目?
例如,我有:
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = ....something to do with dogs....
而且我希望
clonedList中的对象与狗列表中的对象不同。
解决……继续阅读 »
我想知道是否有推荐的方法可以在Java中进行实例的深层克隆/复制。
我有3个解决方案,但我可能会想念一些,我想征求您的意见
编辑:包括Bohzo命题,并提炼问题:更多是关于深克隆而不是浅克隆。
自己做:
在属性之后通过手工属性对克隆进行编码,并检查是否也克隆了可变实例。 专业人士:-控制将执行的操作-快速执行 缺点:-繁琐的编写和维护-容易发生错误(复制/粘……继续阅读 »
如何克隆ArrayList并在Java中克隆其项目?
例如,我有:
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = ....something to do with dogs....
而且我希望
clonedList中的对象与狗列表中的对象不同。
解决方……继续阅读 »