Набор членов класса (значение) вызывается рекурсивно … почему?

У меня есть класс, как показано ниже

class Employee(var person: String = "Employee", var worksAt: String = "California", var mood: String = "Happy") { var name: String = "Name: " set(value){ name = "Name: $value" } var allString: String private set init { this.allString = "$name works at $worksAt is $mood" this.person = "Person: " + person!! this.worksAt = "Work at: " + worksAt this.mood = "Mood :" + mood } override fun toString(): String { return this.name + "\n" + worksAt + "\n" + mood } } 

Когда я задаю имя

  val reaEmployee = Employee() reaEmployee.name = edt_main.text.toString() 

Имя get set рекурсивно бесконечно … ie get Name: Name: .... $value … пока не будет память. Что я установил неправильно?

Это связано с тем, что внутри установщика для name вы снова задаете name , которое вызывает сеттер.

Вы должны использовать field для доступа к полю резервного копирования, а не для вызова установщика.

 field = "Name: $value" 
Intereting Posts
IlegalStateException, где выбрасывается при попытке получить значения из экземпляра RoomDatabase Как указать версию Kotlin? Котлин компиляции из командной строки Параметр типа reated Kotlin не может использоваться как параметр типа в теле функции Как удалить размытие из корневого представления в android Использовать NumberFormat.getCurrency в Kotlin Android Есть ли накладные расходы для написания библиотеки в Kotlin для Android? Дооснащение – анализ неожиданных данных Проверить ожидаемые исключения в Котлине Переопределить аннотацию @JsonIgnore для некоторых контроллеров. Джексон. весна Выход из системы не работает в приложении Spring Boot (метод POST не поддерживается) как закрыть kotlin coroutines максимальный параллелизм Котлин, когда () локальное переменное введение Kotlin Удалить все не буквенно-цифровые символы Могу ли я создать метод расширения Kotlin для добавления rxJava-подписки на композитную подписку?