Bloch Effective Java - предпочитайте статические классы нестатическим - сколько экземпляров?

Я хочу знать, сколько экземпляров статического класса-члена может быть создано включающим классом. Я предполагаю только одно, но тогда следующий отрывок из Блоха не имеет смысла для меня.

Цитата «Эффективная Java» Джошуа Блоха - Статья 22 *. Пользуются статическими классами-членами над нестатическими.

Частое использование закрытых статических классов-членов состоит в том, чтобы представлять компоненты объекта, представленные их включающим классом. Например, рассмотрим экземпляр Map, который связывает ключи со значениями. Многие реализации Map имеют внутренний объект Entry для каждой пары ключ-значение на карте. Хотя каждая запись связана с картой, методы записи (getKey, getValue и setValue) не нуждаются в доступе к карте. Следовательно, было бы расточительно использовать нестатический класс-член для представления записей: лучше всего использовать частный статический класс-член. Если вы случайно опустите модификатор static в объявлении записи, карта все равно будет работать, но каждая запись будет содержать избыточную ссылку на карту, которая тратит пространство и время.

Он утверждает, что карта создает объект Entry для каждой пары ключ-значение на карте, то есть несколько экземпляров статического члена класса.

Так что мое предположение неверно! Это означает, что мое понимание статических классов-членов неверно. Все знают, как ведет себя статическая переменная-член, например, классическая статическая финальная строка - существует только один экземпляр объекта.

Значит ли это, что класс статического члена фактически не создается при создании экземпляра окружающего объекта?

Ну, в таком случае, какой смысл Map использовать статический член класса для Entry? Почему бы просто не использовать интерфейс на API? Любой другой класс Collections мог бы тогда просто предоставить свою собственную реализацию.

[*] Просто понял, что это пункт 18 в PDF-версии моей книги

Ответы на вопрос(3)

Ваш ответ на вопрос