如何使属性只能在Kotlin的类内部发生突变



我是编程新手,尤其是Kotlin,如果我的问题太基本,我很抱歉

我需要使一个属性只能在其类内进行变异,但如果其他类访问该属性,我只能获得值,但不能更改它。

class Person {
var name = ""
fun changeName(newName: String) {
name = newName
}

}

但是如果我从其他类访问这个,我仍然可以更改名称。我只想从其他类访问该值

somePerson.name = "newNameIsNotAllowedHere"

但是如果我将属性更改为val,那么我就不知道如何通过方法进行分配

class Person {
val name = ""
fun changeName(newName: String) {
name = newName // can't assign new value because of val
}

}

如果在Android中使用LiveData,从我遵循的教程中,我可以做这样的事情,但我很困惑如何在正常数据类型中应用相同的行为

private val mIsLoadingData = MutableLiveData<Boolean>()
val isLoadingData : LiveData<Boolean>
get() =  mIsLoadingData

Pubic getter和私有setter:

class Person {
var name: String = ""
private set
}

文档:http://kotlinlang.org/docs/reference/properties.html#getters-和设置

最新更新