Я читаю Java-учебник для перечислений, расположенных здесь, и у меня есть вопрос: http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html#Card
Часть, в которой я запутался, выглядит следующим образом:
"Класс Card, указанный выше, содержит
статическая фабрика, которая возвращает колоду,
но нет никакого способа получить
индивидуальная карта от ее ранга и
подходить. Просто разоблачение конструктора
уничтожит свойство синглтона
(что только один экземпляр каждого
карта может существовать). Вот как
написать статическую фабрику, которая
сохраняет свойство синглтона,
используя вложенный EnumMap: "
Теперь, насколько я понимаю, изменение оригинального частного конструктора "Card" на public позволило бы нам создавать неограниченное количество копий объекта "Card" с заданной мастью + рангом. Предлагаемое решение состояло в том, чтобы создать EnumMap, в котором будут храниться четыре Карты (по одной для каждой масти), которые сами содержат 13 объектов Карты с рангом в качестве ключей.
И теперь, если вы хотите извлечь конкретный объект Card из колоды, вам нужно просто вызвать метод "valueOf". Теперь у меня вопрос: что мешает вам вызывать метод valueOf столько раз, сколько вы хотите? Не приведет ли это к той же проблеме, что и открытый исходный приватный конструктор?
Спасибо.