kotlin 的成员变量的 get() 以及 null 检测问题

class Machine : AbstractVerticle {

    private var config: Config? = null
    
    constructor();
    
    constructor(config: TicketMachineConfig) {
        this.config = config
    }
}
  1. 我有这样一个类,逻辑上 Config 是必出传的。
  2. 但是由于类是被 Vertx 创建,于是我就必须提供一个空的构造函数。
  3. 于是 config 就必须先等于 null
  4. 于是返回类型就变成了 Config?
  5. 于是所有使用的地方就要 config!!

这个太丑陋了,于是我试了:

  1. 重写 get 方法。kotlin 不让重写,只让写 get(), 但是返回值定死了 Config?。失败。
  2. 改成别的名字 getSafeConfig()。 和别的字段的使用不是一个画风,而且变成了两个接口,不知道人还是会用 config!!
阅读 3.5k
1 个回答
  1. 使用 lateinit var 定义延迟初始化变量

    class Machine : AbstractVerticle {
    
        private lateinit var config: Config
        
        constructor();
        
        constructor(config: TicketMachineConfig) {
            this.config = config
        }
    }
  2. 使用 kotlin 构造函数

    class Machine(private val config: Config) : AbstractVerticle {
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进