Оператор преобразования TreeMap и SortedMap
Что не так с этим утверждением?
private final HashMap<String, SortedMap<Long, Long>> abc;
abc = new HashMap<String, TreeMap<Long, Long>>;
Это показывает, что ошибка SortedMap
не может быть преобразован в TreeMap
как это? Как я могу сделать это возможным?
2 ответа
Если вы действительно хотите иметь возможность назначить его таким образом, то можете ли вы использовать подстановочный знак с привязкой ? 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<>());
Вы не инициализировали свой HashMap
, Не забывайте использовать конструктор, когда создаете новый объект.
import java.util.*;
public class MyClass {
public static void main(String args[]) {
HashMap<String,SortedMap<Long,Long>> abc;
abc = new HashMap<>();
}
}