【发布时间】:2015-07-21 16:07:41
【问题描述】:
我正在阅读 J. Bloch 的有效 java,现在我在第 39 节(制作防御性副本)。他提到通过clone的方法制作防御副本不好,因为:
还要注意,我们没有使用 Date 的 clone 方法来制作 防御副本。因为 Date 不是最终的,所以克隆方法 不是 保证返回一个类为 java.util.Date 的对象:它可以 返回一个不受信任的子类的实例,专为 恶作剧。
强调的陈述对我来说并不明显。实际上,让我们与javadocs 协商。没有关于创建子类的任何参考。我们唯一可以确定的是:
此方法创建该对象的类的新实例,并且 用完全的内容初始化它的所有字段 这个对象的对应字段,就像通过赋值一样;内容 的字段本身没有被克隆。
那么为什么 J. Bloch 说它可以创建子类?您不能从 javadoc 中解释它的含义吗(我自己看不到)。
【问题讨论】: