鍍金池/ 問答/網(wǎng)絡(luò)安全/ kotlin 的成員變量的 get() 以及 null 檢測問題

kotlin 的成員變量的 get() 以及 null 檢測問題

class Machine : AbstractVerticle {

    private var config: Config? = null
    
    constructor();
    
    constructor(config: TicketMachineConfig) {
        this.config = config
    }
}
  1. 我有這樣一個(gè)類,邏輯上 Config 是必出傳的。
  2. 但是由于類是被 Vertx 創(chuàng)建,于是我就必須提供一個(gè)空的構(gòu)造函數(shù)。
  3. 于是 config 就必須先等于 null
  4. 于是返回類型就變成了 Config?
  5. 于是所有使用的地方就要 config!!

這個(gè)太丑陋了,于是我試了:

  1. 重寫 get 方法。kotlin 不讓重寫,只讓寫 get(), 但是返回值定死了 Config?。失敗。
  2. 改成別的名字 getSafeConfig()。 和別的字段的使用不是一個(gè)畫風(fēng),而且變成了兩個(gè)接口,不知道人還是會(huì)用 config!!
回答
編輯回答
過客
  1. 使用 lateinit var 定義延遲初始化變量

    class Machine : AbstractVerticle {
    
        private lateinit var config: Config
        
        constructor();
        
        constructor(config: TicketMachineConfig) {
            this.config = config
        }
    }
  2. 使用 kotlin 構(gòu)造函數(shù)

    class Machine(private val config: Config) : AbstractVerticle {
    }
2018年7月3日 21:09