Kotlin创建对象时,应使用val还是var?
何时在创建类实例时用val或var
核心原则很简单:看你是否需要让这个变量后续指向另一个不同的类实例。
用val的场景
如果这个变量从创建到生命周期结束,始终只指向这一个对象,不会被重新赋值为其他对象(哪怕对象内部的属性可以被修改),就用val:
// 示例:创建一个User实例,后续不会让user变量指向其他User对象 val user = User("Alice", 25) // 即使修改user内部的属性,val依然合法 user.age = 26
常见场景:
- 大部分业务中的固定实例,比如配置对象、单例实例、一次创建后不再替换的业务实体
- 函数内的局部对象,不需要重新赋值的情况
用var的场景
如果后续需要让这个变量指向另一个不同的实例,就用var:
// 示例:需要切换不同的配置实例 var config = DefaultConfig() // 后续替换为测试配置 config = TestConfig()
常见场景:
- 需要动态切换实例的情况,比如环境切换、状态切换
- 某些需要重新初始化的对象,比如重新加载的用户会话
关键误区提醒
别把变量引用的可变性和对象内部属性的可变性搞混:
- val修饰的变量,只是不能改它指向的对象,但对象本身的属性如果是var,依然可以修改
- var修饰的变量,只是允许它指向不同的对象,不代表对象内部属性一定可变
内容的提问来源于stack exchange,提问作者Sahran
相关产品推荐
相关产品推荐

