Если вы действительно хотите иметь возможность назначить его таким образом, тогда вы можете использовать подстановочный знак с ограничением ? extends SortedMap
. например:
private final Map<String, ? extends SortedMap<Long, Long>> abc;
...
abc = new HashMap<String, TreeMap<Long, Long>>();
Тем не менее, вам не нужно указывать тип вложенной карты при создании нового внешнего экземпляра hashmap ... просто сохраните его как SortedMap
. Позже, когда вы вставляете значение, это могут быть новые TreeMap
экземпляры, потому что они реализуют SortedMap
. например,
private final Map<String, SortedMap<Long, Long>> abc;
...
abc = new HashMap<String, SortedMap<Long, Long>>();
abc.put("Test", new TreeMap<Long, Long>());
После сокращения этого кода для вывода типа строки назначения могут выглядеть следующим образом:
abc = new HashMap<>();
abc.put("Test", new TreeMap<>());