Нет метода клонирования в классе String
Вопрос о технических способностях
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 не содержит метод клонирования.
Я хотел знать причину того же.
2 ответа
String
является неизменным объектом, поэтому он не должен clone
метод, так как клиентский код не может изменить свое состояние внутри String
учебный класс.
Вы можете просто сослаться на оригинал 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