【发布时间】:2014-03-18 18:53:48
【问题描述】:
为什么String 类没有实现Cloneable 接口?
例如:(我们有时会写这种类型的代码。)
String s1 = new String("Hello");
String s2 = new String("Hello");
这里是 s1!=s2;
因此,如果我们可以这样做,而不是这样做:
String s1 = new String("Hello");
String s2 = s1.clone();
这很容易。
【问题讨论】:
-
为什么会...?为什么要复制/克隆不可变对象。
-
请查看更新后的问题。
-
只要
String s2 = s1;。没有人能打破这一点。 -
如果您认为您确实需要两个不同的
String引用,即使值可能相同,我建议您重新考虑您的设计。这可能意味着您正在尝试做一些“聪明”的事情,以节省一些打字,而不是编码您的意思。不仅聪明的代码可读性差,任何在你的代码中看到s1==s2或s1!=s2的人都可能认为你犯了一个新手错误。 -
看来这可能是XY problem。也许与其询问
s1.clone();,不如解释一下为什么需要单独的不可变对象实例?