mutable/immutable объекты [закрыт]

116
07 декабря 2020, 18:20
Закрыт. Данный вопрос необходимо конкретизировать. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 1 год назад.

Улучшить вопрос

Читаю про mutable/immutable объекты У неизменяемых объектов много полезных свойств. Но можно выделить два, которые характерны практически для всех immutable-объектов:

1) Неизменяемые объекты можно реализовать значительно проще, чем изменяемые. 2) Неизменяемые объекты можно свободно использовать одновременно из разных нитей.

У меня несколько вопросов, пожалуйста прошу если вы отвечаете и вам не трудно ответьте пожалуйста мне по пунктам, заранее спасибо :)

1) Как понять объекты можно реализовать значительно проще?

2) Правильная информация или нет? - Неизменяемый объект - это такой объект, чье внешнее видимое состояние не может измениться после его создания. Классы String, Integer и BigDecimal в библиотеке классов Java являются примерами неизменяемых объектов - они представляют отдельное значение, которое не может измениться в течение жизненного цикла объекта.

3) Какие mutable/immutable объекты бывают кроме классов String (StringBuilder, StringBuffer), Integer, BigDecimal? Просто названия я хочу их посмотреть

4) Неизменяемые объекты можно свободно использовать одновременно из разных нитей. Нитей это потоков? Это синонимы?

Answer 1

Значительно проще, потому, что когда объект не может измениться в принципе:

  • Отпадает необходимость дополнительных проверок, синхронизации записи, поддержания инварианта класса после изменения полей.
  • Отпадает необходимость копирования разделяемых данных.

Кроме того

  • Создается возможность для кеширования экземпляров, как явного, так и по усмотрению компилятора.
  • Становится возможной более агрессивная оптимизация.

Список immutable классов в стандартной библиотеке пополняется постоянно, но более менее полный список попытались привести в этом ответе.

Свободно использовать возможно и нельзя, потому, что неизменяемый объект вполне может содержать изменяемые поля, но в общем случае использовать immutable объекты в многопоточных приложениях гораздо безопаснее, а в ряде случаев и совершенно безопасно.

READ ALSO
Обновлять время и прибавлять часы и минуты

Обновлять время и прибавлять часы и минуты

Нужно, чтобы программа считывала текущее время пользователя, обновляла его каждую минутуТакже, чтобы выводились время и минуты с формате:...

116
В каком формате объект записываются в файл?

В каком формате объект записываются в файл?

Вот информация записанная в файл Как понять этот формат?

148
Вопросы от начинающего [закрыт]

Вопросы от начинающего [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

123
Java stream как задать условие?

Java stream как задать условие?

Есть лист Integer, я хочу сделать из него строку с помощью stream, но с условием, что если число больше 10 то добавлять к строке "> 10, ", а если меньше,...

199