Нет метода клонирования в классе 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
Другие вопросы по тегам