2017-03-04 7 views
2

は私がメモリ不足になるまで... Name: Name: .... $valueを取得し、私は名前を再帰的に無限に設定します名前クラスメンバーセット(値)は再帰的に呼び出されます...なぜですか?

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

を設定

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 
    } 
} 

...すなわち、以下のようにクラスを持っています。私は何を正しく設定していないのですか?

答えて

7

これは、nameのセッターの中にセッターを呼び出すnameを再度設定しているためです。

セッターを呼び出すのではなく、バッキングフィールドにアクセスするには、fieldを使用する必要があります。

field = "Name: $value" 
+0

クールです。ありがとう!私はhttps://antonioleiva.com/classes-kotlin/の例に従って、これに入りました。私はAntonioにそれについて知らせます。ありがとう! – Elye

関連する問題