Класс KeyStroke как ключ в HashMap

В нескольких ответах, касающихся переопределения equals() и hashCode(), описывается необходимость обоих и применение их в качестве ключей в HashMap в Java. Мой вопрос: безопасно ли использовать класс Java KeyStroke в качестве ключа в HashMap? Кроме того, поэтому я не раздражаю и продолжаю задавать эти вопросы, как узнать, безопасен ли предоставленный класс (я думаю, KeyStroke предоставляется Swing) для использования в этом контексте... т.е. переопределяет equals() и hashCode()?

заранее спасибо!


person JagWire    schedule 04.05.2012    source источник


Ответы (2)


Чтобы узнать, переопределены ли equals и hashCode, нужно взглянуть на API. hashCode и equals не переопределяются в KeyStroke, но они есть в AWTKeyStroke. Фактически, AWTKeyStroke#hashCode заявляет:

[этот объект] является хорошим выбором в качестве значения индекса в хеш-таблице.

person Jeffrey    schedule 04.05.2012
comment
@Джеффри: Большое спасибо! Я споткнулся о javadoc KeyStroke, полностью пропустив расширение AWTKeyStroke. Спасибо еще раз... - person JagWire; 04.05.2012

Лучше всего, если ключ HashMap переопределяет equals и hashCode и является неизменяемым, и если вы проверите API, KeyStroke таковым является. Так что все должно быть в порядке.

person Hovercraft Full Of Eels    schedule 04.05.2012