Kotlinで単純に再代入不可にしたい場合はvalを使えばいいですが、以下のような内部で変更可能なgetterのみのクラスを作る方法がわからなかったので調べてみました。
Curry.java
public class Curry {
private String spice = "トウガラシ";
public String getSpice() {
return spice;
}
private void changeSpice() {
spice = "ショウガ";
}
}
#方法
Kotlinの変数はプロパティなので、setterをprivateにして外部から使用できなくすればいいです。
var spice : String = "トウガラシ"
private set
上のJavaのクラスをKotlinで書いた場合
Curry.kt
class Curry {
var spice : String = "トウガラシ"
private set
private fun changeSpice() {
spice = "ショウガ"
}
}
外部からは参照のみで代入はできません。
Main.kt
fun main(args: Array<String>) {
val curry = Curry()
// 読み取り可能
println(curry.spice)
// 代入不可 コンパイルエラー
curry.spice = "胡椒"
}