Практический пример для неизменного класса - PullRequest
3 голосов
/ 09 февраля 2012

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

Ответы [ 4 ]

5 голосов
/ 09 февраля 2012

Рассмотрим java.lang.String.Если бы он не был неизменным, каждый раз, когда у вас есть строка, которая, как вы хотите быть уверенной, не изменится под вами, вам придется создать копию.

Другой пример - коллекции: приятно бытьспособен принимать или возвращать действительно неизменяемую коллекцию (например, из Гуавы - не просто неизменяемое представление изменяемой коллекции) и быть уверенным, что она не будет изменена.

Независимо от того, считаются ли они "потребностями" или нетЯ не знаю, но я бы не хотел развиваться без них.

3 голосов
/ 09 февраля 2012

Хороший пример связан с хешированием.Класс переопределяет методы equals() и hashCode(), так что его можно использовать в структурах данных, таких как HashSet и (в качестве ключей) HashMap, а хэш-код, как правило, определяется некоторыми идентифицирующими атрибутами-членами.Однако если бы эти атрибуты изменились, то изменился бы и хеш-код объекта, поэтому объект больше не может использоваться в структуре данных хеширования.

2 голосов
/ 09 февраля 2012

Java предоставляет хороший пример: String.

0 голосов
/ 09 февраля 2012

В этой статье приведен хороший пример цвета (поскольку определения цвета не меняются). http://www.ibm.com/developerworks/java/library/j-jtp02183/index.html

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