【发布时间】:2011-02-05 13:53:49
【问题描述】:
我多次争辩说,使用clone() 并不是一个糟糕的做法。是的,我知道这些论点。 Bloch said 这很糟糕。他确实做到了,但他说实施clone() 很糟糕。另一方面,使用克隆,特别是如果它由受信任的库(例如 JDK)正确实现,是可以的。
就在昨天,我讨论了an answer of mine,这只是表明使用clone() 代替ArrayList 是可以的(我猜因此没有得到任何支持)。
如果我们查看ArrayList 的@author,我们可以看到一个熟悉的名字——Josh Bloch。所以ArrayList(和其他集合)上的clone() 非常好(看看他们的实现)。
Calendar 和大多数 java.lang 和 java.util 类也是如此。
那么,给我一个理由为什么不使用 clone() 与 JDK 类?
【问题讨论】:
-
昨天有人提议克隆数组来复制它们(而不是 System.arraycopy 或 Arrays.copyOf)。得到了我的 +1。 stackoverflow.com/questions/2589741/…
-
记得我告诉一位同事不要到处添加克隆方法。但我很难解释为什么:)
-
clone()没问题。不过很多人都搞错了。我发现它非常适合模板(即工厂和类合二为一 - 少得多的样板废话)。顺便说一句,布洛赫先生的书不应被视为福音,请使用您自己的判断。思考练习:为什么HashMap.keySet/values和ArrayList.subList不能序列化?
标签: java