У меня есть класс, как показано ниже
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"