動かざることバグの如し

近づきたいよ 君の理想に

kotlinのData Classでcustom getter/setterを実装する

結論からいうと色々カスタマイズしたいならData Classを使わずに普通のクラス作れって話

環境

  • kotlin 1.2

やりたいこと

kotlinには普通のクラスとは異なり値を格納するためだけのクラス、Dataクラスがよいうされている。変数を宣言するだけで自動でゲッターとセッターつけてくれて非常に便利なんだけど、getするときに〜の型に変換してほしいとか、setするタイミングで〜をつけてほしいとかある。

が、しかし

Data Classにgetter,setter()をカスタマイズできない。そこでもう1つ変数を用意する。

data class User(private val _name: String, val age: Int) {
    val name = "!!${_name}"
        get(): String {
            return "${field}!!"
        }
}


var u = User("taro", 30)
// u.name = !!taro!!

悪あがき感が否めないが。。。素直にデフォルトのclassでやるべきか