You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请问Kotlin类Code A与Code B之间存在哪些差异?

Code A与Code B的核心差异

1. 变量i的作用域

  • Code A:i是伴生对象内部的成员变量,属于类级共享变量。所有My类的实例共用同一个i的存储空间,调用add()时会对同一个值进行累加操作。
  • Code B:companion object var i = 0的写法实际让i变成了每个实例的独立变量(该写法不符合Kotlin伴生对象的标准声明规范)。每个My实例都有自己的i副本,实例间的i值互不干扰。

2. 运行结果差异

  • Code A:
    • a1.add():共享变量i从0累加为1,日志输出1
    • a2.add():共享变量i从1累加为2,日志输出2
  • Code B:
    • a1.add():a1实例的i从0变为1,日志输出1
    • a2.add():a2实例的i从0变为1,日志输出1

3. 语法规范性

  • Code A:是Kotlin声明伴生对象成员变量的标准写法,语法严谨清晰,符合官方规范。
  • Code B:写法非标准,容易混淆伴生对象的作用。如果要声明实例独立变量,标准写法应为直接在类中定义var i = 0,无需companion object修饰。

内容的提问来源于stack exchange,提问作者HelloCW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:28:33