ListMap
на самом деле хороший пример, потому что в многопоточной среде вы должны synchronize
, даже если вы только смотрите .
var
назначения с другой стороны являются атомарными, вам вообще не нужно synchronize
, просто пометьте его как @volatile
.
Это выигрыш в производительности, а также в надежности (когда ваш материал нуждается в synchronized
доступе, это лишь вопрос времени, когда кто-то забудет правильно его кодировать).
Так что, да, если по какой-то причине вы не можете использовать «неизменяемый val», то определенно предпочтите «неизменяемый var», а не «изменяемый вал», если только нет явной и конкретной причины, по которой вы хотите, чтобы ваш контейнер был изменяемым (например, карта действительно огромна и часто обновляется, вызывая измеримые проблемы с производительностью).
Что касается "mutable var", то да, как и в предыдущем ответе, я также понятия не имею, почему в мире вы хотите иметь , что .