Ключ, специфичный для ограничений - соглашение для HashMap - Java - PullRequest
3 голосов
/ 14 сентября 2011

Простой вопрос, но я не мог найти ответ,

Можно ли ограничить соглашение о ключах для HashMap моего приложения?Поскольку я не хочу, чтобы будущий разработчик работал над ним и пытался использовать другой ключ, я хочу применить правило относительно того, какой тип ключа они должны использовать.

Например:

Может быть только 4 пары, и все четыре ключа могут быть только

 1. <North, Place>
 2. <South, Place>
 3. <East, Place>
 4. <West, Place>

Когда разработчик использует мои методы, они должны получить ошибку, если они используют другой ключ, отличный от упомянутого выше.

Спасибо за любую помощь

Что я могу сделать до сих пор:

Я могу проверить с помощью оператора if при добавлении ключа и значения в HashMap, скажем, в setLocationList (Stringключ, место место) ;.Но я хочу что-то умнее, чем это, если оно доступно.Спасибо.

1 Ответ

5 голосов
/ 14 сентября 2011

Конечно, используйте enum для ваших указаний, затем используйте EnumMap для вашего типа карты.

public enum Direction {
    NORTH, EAST, SOUTH, WEST;
}

Map<Direction, Place> map = new EnumMap<Direction, Place>(Direction.class);

Это гарантирует, что ключ должен иметь тип Direction. И это водонепроницаемый - из-за того, что ключ типа передается конструктору EnumMap, даже если вы используете универсальный слепой код, ограничение типа будет по-прежнему применяться (во время выполнения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...