Здравствуйте!
Подскажите, пожалуйста, почему мое решение не проходит валидацию?
Суди по дебагеру - создается новый объект.
package com.javarush.task.task21.task2107;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
/*
Глубокое клонирование карты
*/
public class Solution implements Cloneable {
@Override
public Object clone() throws CloneNotSupportedException{
Solution solution = (Solution) super.clone();
solution.users = new LinkedHashMap<>();
for(Map.Entry<String,User> entry:users.entrySet()){
solution.users.put(entry.getKey(), entry.getValue().clone());
}
return solution;
}
public static void main(String[] args) {
Solution solution = new Solution();
solution.users.put("Hubert", new User(172, "Hubert"));
solution.users.put("Zapp", new User(41, "Zapp"));
Solution clone = null;
try {
clone = (Solution) solution.clone();
System.out.println(solution);
System.out.println(clone);
System.out.println(solution.users);
System.out.println(clone.users);
} catch (CloneNotSupportedException e) {
e.printStackTrace(System.err);
}
}
protected Map<String, User> users = new LinkedHashMap();
public static class User implements Cloneable{
int age;
String name;
public User(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public User clone() throws CloneNotSupportedException {
return (User) super.clone();
}
@Override
public boolean equals(Object obj){
if(obj == this) return true;
if(obj == null || obj != this.getClass()) return false;
User u = (User) obj;
return age == u.age && (name == u.name || (name != null && name.equals(u.name)));
}
@Override
public int hashCode(){
return Objects.hash(age,name);
}
}
}