Kotlin中如何不创建实例,用点符号修改类中的变量?
问题解答
为什么MyClass.name = "New Name"无法执行?
你定义的name是实例成员变量,它属于MyClass的每个对象实例,而非MyClass类本身。只有创建MyClass的实例后,才能通过实例对象访问这个变量,直接用类名MyClass去访问实例成员会直接报错。
不创建实例修改类级变量是否可行?
完全可行,你需要把变量声明为类级成员,Kotlin中可以通过companion object(伴生对象)实现。修改后的代码如下:
class MyClass(me: String) { companion object { var name: String = "My Name" } }
现在你就可以直接用MyClass.name = "New Name"修改这个类级变量,该变量属于MyClass类本身,所有MyClass的实例都会共享这个值,修改后任何地方通过MyClass.name访问到的都是最新值。
如果你的需求是类级常量,也可以在伴生对象里用const val声明(但常量不可修改)。
内容的提问来源于stack exchange,提问作者rakesh s
相关产品推荐
相关产品推荐

