В java создаю такую конструкцию. По документации метод entrySet возвращает объект типа Set, но под отладчиком что-то непонятное. Откуда взялся тип HashMap@EntrySet? Вот у переменной hashMap тип корректный.
HashMap<String, Integer> hashMap = new HashMap(1);
hashMap.put(null, 156);
hashMap.put("First", 16);
hashMap.put("Second", 16);
Set set = hashMap.entrySet();
Если откроешь реализацию, то увидишь:
final class EntrySet extends AbstractSet<Map.Entry<K,V>>
А если перейдешь в реализацию AbstractSet:
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
Вот и выходит, что метод Hashmap.entrySet() возвращает объект класса HashMap.EntrySet, который расширяет абстрактный класс AbstractSet, который имплементирует интерфейс Set.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей