Я часто слышу термин "безгражданство" и "неизменяемый". Например, HTTP - это протокол без учета состояния, а объект String - неизменяемый объект. Но мне трудно понять разницу между ними. Когда я создаю объект без гражданства, он не сохраняет никаких "состояний" данных внутри. И если я создам объект Immutable, это означает, что его никогда не изменится.
- http://en.wikipedia.org/wiki/State_ (computer_science)
- http://en.wikipedia.org/wiki/Immutable_object
Разве это не означает то же самое?
Поскольку неизменяемый объект не изменяется, по определению он не может иметь состояние. Это то, что навсегда. И если объект не имеет состояния, он не может быть мутирован (по определению). Таким образом, не все ли неизменный объект неизменен и неизменяемый объект без гражданства?
Что может быть примером изменчивого объекта без сохранения состояния или неизменяемого объекта с сохранением состояния?