String Class 中没有克隆方法
No clone method in String Class
技术能力问题
HashMap<String, String> map = new HashMap<String,String>();
String key1 = "key1";
map.put(key1, "value1");
String key2 = key1.clone();
map.put(key2, "value2");
地图对象的内容是什么?
我回答为 {key1=value2} 但后来意识到 String 不包含克隆方法。
我想知道同样的原因。
String
是一个 immutable object,因此它不需要 clone
方法,因为客户端代码无法在 String
[=20] 中更改其状态=].
你可以参考原文String
,例如:
String key2 = key1;// or using key1 directly instead.
正如已经指出的那样,没有必要克隆像 String
.
这样的不可变对象
但是如果您决定确实需要一个不同的字符串实例(您几乎肯定不需要),您可以使用复制构造函数:
String copy = new String(original);
System.out.println(copy.equals(original)); // true
System.out.println(copy == original); // false
技术能力问题
HashMap<String, String> map = new HashMap<String,String>();
String key1 = "key1";
map.put(key1, "value1");
String key2 = key1.clone();
map.put(key2, "value2");
地图对象的内容是什么?
我回答为 {key1=value2} 但后来意识到 String 不包含克隆方法。
我想知道同样的原因。
String
是一个 immutable object,因此它不需要 clone
方法,因为客户端代码无法在 String
[=20] 中更改其状态=].
你可以参考原文String
,例如:
String key2 = key1;// or using key1 directly instead.
正如已经指出的那样,没有必要克隆像 String
.
但是如果您决定确实需要一个不同的字符串实例(您几乎肯定不需要),您可以使用复制构造函数:
String copy = new String(original);
System.out.println(copy.equals(original)); // true
System.out.println(copy == original); // false