JavaのBeanではprivate属性でフィールドを定義して、setter、getterを介したプロパティアクセスを行っていました。Kotlinでは少し違うようです。
まず、クラスは下のように定義します。
public class Cutomer {
public var id: String = ""
public var name: String = ""
public var mail: String = ""
}
varキーワードは ミュータブル(可変) の意味で
valキーワードを使うと イミュータブル(読み取り専用) になります。
下は実際にCustomerクラスを使ってみたイメージです。
var c1 = Cutomer()
c1.id = "001"//setter setId
c1.name = "tanaka"// setter setName
println(c1.id)//getter getId()
println(c1.name)//getter getName()
001
tanaka
Javaでいうと直接フィールドアクセスしているように見えますがsetter、getterが隠蔽されているイメージです。
ではアクセサをカスタマイズしたいときはどうするかというと
下記のように記述します。
public class Cutomer {
public var name: String =""
get() = field + " [=GETTER RESULT]"
set(value) {
field += value
}
}
var c2 = Cutomer()
c2.name = "yamada"
println(c2.name)//getter getName()
c2.name = " tarou"
println(c2.name)//getter getName()
tanaka [=GETTER RESULT]
yamada [=GETTER RESULT]
yamada tarou [=GETTER RESULT]
field 識別子を使うとKotlinは自動バッキングフィールド にアクセスすることができます。