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!!


www说
浏览 1735回答 1
1回答

繁花如伊

使用 lateinit var 定义延迟初始化变量class Machine : AbstractVerticle {     private lateinit var config: Config         constructor();         constructor(config: TicketMachineConfig) {             this.config = config     } }使用 kotlin 构造函数class Machine(private val config: Config) : AbstractVerticle { }
打开App,查看更多内容
随时随地看视频慕课网APP