资讯动态

第062篇 val 与 var:不可变优先的工程哲学

发布时间:2026/10/4 21:25:19 来源:尧图企业网站定制
val与var看着不像一个面试题,实际是 Kotlin 语义的入口。它背后连着不可变性、引用与对象的区别、防御性拷贝、集合的只读视图、data class 的 copy 语义、并发下的可见性一整条线。答"val 不可变,var 可变"只够两分;能讲清"val不可变指的是引用还是对象",这题就有了区分度。先把结论放在前面:val声明的是引用不可重新赋值,var允许重新赋值。注意是不可重新赋值,不是"对象不可变"——一个val list = mutableListOf(1,2,3)里的引用不能换,但列表内容可以改。 Kotlin 把"引用不可变"与"对象不可变"分成了两个层次:前者由val保证,后者要靠List/Map的只读类型(kotlin.collections.List的readOnly视图)或真正的不可变类型。工程上的默认选择是:默认用val,确实需要重新绑定引用才用var,而"对象是否可变"交给类型(只读集合 vs 可变集合)来表达。机制拆解Kotlin 的属性在字节码层面落到getXxx/setXxx方法(private修饰时字段名可能

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑