java - 了解 DeepCopy 概念

标签 java copy

我正在阅读有关 Hiberante 中所谓的 UserType 的内容,它声明了 deepCopy(Object) 方法。作者建议我们对 immutable 类使用以下实现:

Because MonetaryAmount is an immutable class, the deepCopy() method returns its argument.

为什么?我认为deepCopy实现如下:

public Object deepCopy(Object value) throws HibernateException {
    return value;
}

实际上是一个副本。我错过了什么?

最佳答案

不可变对象(immutable对象)不能改变它的状态。所以如果你返回相同的对象并不重要。因为无论如何都无法对其进行修改。因此,当根本没有没有副本时,它实际上就像一个deepCopy

让我们以字符串为例。

String s1 = "hello";
String s2 = new String(s1);
String s3 = s1;

无论您对任何变量执行什么操作,都不会影响其他两个变量。

关于java - 了解 DeepCopy 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31581288/

相关文章:

java - 为什么 -2>>>1 在 Java 中等于 2147483647

java - java中同步对象是如何工作的

java - 有没有可能 : trigger JButton events via method call - not JButton clicks?

c - 在我的例子中是 strncpy 或 strlcpy

iphone - 是否可以在 iPhone 上的 UIWebView 上以编程方式调用 "select all",然后调用 "copy"?

javascript - 将元素作为 HTML 复制到剪贴板

由于堆中存在大量 JSP/HTML 内容而导致 Java OutOfMemory

java - 无法在文件的第一行解析Int

bash - 在 bash 中,cp 会在使用通配符时复制点文件吗?我应该使用哪个选项

java - 使用 Java NIO 的文件复制在 Linux 上很慢