Копирование 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;
}

Ответы (0 шт):