Недавно IntelliJ предложил добавить final
к одному из val
свойств.Это конкретное свойство было инициализировано в блоке init {}
.Я пытался выяснить, какова семантика конструкции final val
и когда я должен ее использовать, но Kotlin - все об неизменности и о том, как val
эквивалентен final
в Java, и поэтому результаты были настолько шумными, чтоЯ ничего не смог найти.
Пример:
final val id: Int // `final` suggested by IDE
init { id = 1 }
Что означает и возможно использование подобного свойства?Применяя final
, какие ограничения это подразумевает помимо неизменности, что уже известно?Имеет ли это какое-либо отношение к наследованию или внешнему доступу?
IntelliJ прекратил предлагать final
, если свойство private
.