当前位置: 首页 > 知识库问答 >
问题:

在Kotlin中,如何使一个属性只能在其类内进行变异?[副本]

余善
2023-03-14

我在编程方面是新手,尤其是在科特林,如果我的问题太基础了,我很抱歉

class Person {

    var name = ""

    fun changeName(newName: String) {
        name = newName
    }


}
somePerson.name = "newNameIsNotAllowedHere"
class Person {

    val name = ""

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


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

共有1个答案

钱跃
2023-03-14

公共吸血鬼和私人二传手:

class Person {

    var name: String = ""
        private set

}

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

 类似资料:
  • 有内在的 科特林拥有的: Java如何解决这个问题:

  • 假设我有一个JPA实体,比如 现在,我知道对于联接表中的每一个条目,这些属性都不能为空。(事实上,数据库强制执行此操作。) 好吧,让我们使用建议的解决方案,并转换为使用委托。 这仍然不能编译,因为 此批注不适用于目标“带有委托的成员属性” 我如何解决这个问题?

  • 我想知道是否可以在同伴对象中使用类的属性。例如,以贝娄为例: 我不能通过c1或C2调用changeAge()函数。我可以使用changeAge的唯一地方是通过Person1.changeAge(),当Person1还没有用适当的构造函数实例化时。我想知道这些动作是不是有其他的选择,或者是没有,有同伴对象有什么意义呢

  • 我正在使用express和apollo-express以及mongodb(猫鼬)制作一个博客服务。 “消息”:“blog验证失败:需要title:Path,需要slug:Path。”

  • 假设我有一个自定义对象的ArrayList,例如 如何按路径、格式、大小或日期添加对其进行排序? 谢了!

  • 出于某种原因,每当我尝试访问 init 块内此可序列化类的属性时,只会打印默认值。我正在使用 firebase 将数据读入此类,该类按预期工作。我想根据 venueName 参数更改类的布尔值,但不能,因为只有默认的 venue 名称正在被访问