Копирование Map Java
У меня есть два интерфейса
public interface Walked {
void walk();
}
public interface Runned extends Walked {
void run();
}
Так же есть класс
public class SimpleObject implements Runned {
@Override
public void run() {
System.out.println("I'm run");
}
@Override
public void walk() {
System.out.println("I'm walk");
}
}
И есть класс
public class SimpleObjectSaver {
private final Map<Integer, Runned> map= new HashMap<>();
public Map<Integer, Walked> getMap() {
//????
return new HashMap<>();
}
}
Вопрос в том, как мне реализовать метод getMap() у класса SimpleObjectSaver, чтобы он вернул map, но преобразовав его к Map. Я знаю что коллекции инвариантны, поэтому полиморфизм тут не сработает, есть ли какой то способ преобразования коллекции Map к Map, не такой как например (или с использованием итератора).
public Map<Integer, Walked> getMap() {
Map<Integer, Walked> returnedMap=new HashMap<>();
for(Map.Entry<Integer, Runned> entry: map.entrySet()) {
Integer key = entry.getKey();
Walked value = entry.getValue();
returnedMap.put(key, value);
}
return returnedMap;
}