ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

第067篇 data class:一行顶 Java 一百行

第067篇 data class:一行顶 Java 一百行 data class是 Kotlin 里被使用频率最高的语法之一,但线上事故也最多。原因是它自动生成的equals、hashCode、toString、copy全是隐式的——代码里看不见,行为出问题也看不见。这篇要讲的就是:编译器替你做了什么、什么时候会失效、以及那些"看起来相等其实不相等"的坑。先把结论放在前面:data class要求至少一个主构造函数参数是val/var,编译器自动生成equals、hashCode、toString、copy()、componentN()(解构用)以及一个Gson/Parcelable相关的静态CREATOR占位。它的价值在于结构相等(structural equality)——两个 data class 实例只要逐字段相等就判定相等,这正是集合去重、Map键、单元测试断言都依赖的语义。它的风险也来自这里:自动生成的equals会对每个字段调用equals,而数组的equals是引用比较。机制拆解先看自动生成
返回列表