云计算百科
云计算领域专业知识百科平台

第069篇 object 与 companion object:关键在构建过程

面试官为什么爱考object 与 companion object?因为这题像一根试纸:背过的人能答出名词,用过的人能讲出细节,踩过坑的人还会主动补一句边界条件。三种回答摆在面前,水平的差距一目了然。

先把结论放在前面:@JvmStatic 与 @JvmField 让伴生成员在 Java 侧呈现为真正的静态成员。真正要把这题答出层次,得把概念拆开看:它解决什么问题、不解决什么问题、和相邻概念的分界在哪里。

这篇object 与 companion object这题的答案可以很短,也可以很长——这篇把它讲成有层次的长答案。

容易混的几个概念

最常见的坑是object 里的可变状态全局共享,成为跨页面数据串号的源头。

其次是Java 侧调用伴生成员没加 @JvmStatic,调用方式变成 INSTANCE 中转,互操作别扭。

还有一个更隐蔽的坑:就object 与 companion object而言,提前声明前提条件、失败路径写清兜底行为,能把大部分事故挡在上线前。

一段代码看懂差异

看一段能直接跑的代码,把上面的机制落到具体写法上:

// object 与 companion object
object Single { // object:饿汉单例
fun doWork() {}
}
class Repo {
companion object { // 类级静态区
const val TAG = \”Repo\”

赞(0)
未经允许不得转载:网硕互联帮助中心 » 第069篇 object 与 companion object:关键在构建过程
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!