Наверное, как и всякий программист, переходящий с C++ на Java, столкнулся с проблемой отсутствия плюсового аналога константных объектов.
Конечно, понятно, что можно писать immutable интерфейсы, или дополнительную immutable версию нужного класса, или создавать копию объекта перед передачей его в функцию, или многое много другое. Но раз уж в Java нет для этого специальных средств - наверное, это было обдуманное решение. Так вот может кто-нибудь грамотно разъяснить следующие вопросы:
- Почему же всё-таки такое решение было принято?
- Как узнать может ли функция изменить состояние объекта?
- Как написать функцию, чтобы люди, использующие её, не опасались изменения передаваемых объектов?
- Аналогично для класса, чтобы у людей не возникало проблем с его использованием.
Наверное, как и всякий программист, переходящий с C++ на Java, столкнулся с проблемой отсутствия плюсового аналога константных объектов.
Конечно, понятно, что можно писать immutable интерфейсы, или дополнительную immutable версию нужного класса, или создавать копию объекта перед передачей его в функцию, или многое много другое. Но раз уж в Java нет для этого специальных средств - наверное, это было обдуманное решение. Так вот может кто-нибудь грамотно разъяснить следующие вопросы:
- Почему же всё-таки такое решение было принято?
- Как узнать может ли функция изменить состояние объекта?
- Как написать функцию, чтобы люди, использующие её, не опасались изменения передаваемых объектов?
- Аналогично для класса, чтобы у людей не возникало проблем с его использованием.
Наверное, как и всякий программист, переходящий с C++ на Java, столкнулся с проблемой отсутствия плюсового аналога константных объектов.
Конечно, понятно, что можно писать immutable интерфейсы, или дополнительную immutable версию нужного класса, или создавать копию объекта перед передачей его в функцию, или многое много другое. Но раз уж в Java нет для этого специальных средств - наверное, это было обдуманное решение. Так вот может кто-нибудь грамотно разъяснить следующие вопросы:
- Почему же всё-таки такое решение было принято?
- Как узнать может ли функция изменить состояние объекта?
- Как написать функцию, чтобы люди, использующие её, не опасались изменения передаваемых объектов?
- Аналогично для класса, чтобы у людей не возникало проблем с его использованием.
Java: immutable object
Наверное, как и всякий программист, переходящий с C++ на Java, столкнулся с проблемой отсутствия плюсового аналога константных объектов.
Конечно, понятно, что можно писать immutable интерфейсы, или дополнительную immutable версию нужного класса, или создавать копию объекта перед передачей его в функцию, или многое много другое. Но раз уж в Java нет для этого специальных средств - наверное, это было обдуманное решение. Так вот может кто-нибудь грамотно разъяснить следующие вопросы:
- Почему же всё-таки такое решение было принято?
- Как узнать может ли функция изменить состояние объекта?
- Как написать функцию, чтобы люди, использующие её, не опасались изменения передаваемых объектов?
- Аналогично для класса, чтобы у людей не возникало проблем с его использованием.