如何使属性只能在Kotlin的类内部进行变异?

时间:2020-03-27 04:25:42

标签: android 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

1 个答案:

答案 0 :(得分:0)

公共获取者和私有设置者:

class Person {

    var name: String = ""
        private set

}

文档:http://kotlinlang.org/docs/reference/properties.html#getters-and-setters