Если у вашего класса есть первичный конструктор, вы должны инициализировать все его свойства "в первичном конструкторе" - либо непосредственно инициализируя их в их объявлении:
val email = "foo@bar.com"
Или в блоке инициализатора:
val email: String
init {
email = "foo@bar.com"
}
Компилятор заставляет вас перенаправлять все вызовы вторичного конструктора первичному конструктору, и поскольку первичный конструктор уже должен инициализировать все свойства внутри класса (в противном случае вызов его создаст частично инициализированный экземпляр, как в вашем примере кода) ), также не имеет смысла инициализировать их в теле вторичного конструктора, особенно для val
, который нельзя переназначить.