我是Kotlin的新手,我嘗試將一個小型Java項目重新改爲這種新語言。我使用MongoDB的在我的項目,我有一個類,例如:Kotlin - 可空字段的nonnull getter
class PlayerEntity {
constructor() {} //for mongodb to create an instance
constructor(id: ObjectId, name: String) { //used in code
this.id = id
this.name = name
}
@org.mongodb.morphia.annotations.Id
var id: ObjectId? = null
var name: String? = null
}
我必須標記id
場可爲空(var id: ObjectId?
),因爲空的構造的。當我嘗試從另一個班級訪問此字段時,我必須使用非空檢查:thePlayer.id!!
。但我的應用程序的邏輯是,id
字段永遠不爲null(mongo創建Player的實例並立即設置id字段)。我不想在任何地方進行非空檢查。
我試圖讓一個非空吸,但它不會編譯:
var id: ObjectId? = null
get(): ObjectId = id!!
我還可以做一些短線的ID,並在構造函數中使用它,但是這看起來像一個骯髒的黑客:
val DUMMY_ID = new ObjectId("000000000000000000000000");
那麼是否有解決此問題的解決方法?
放'lateinit'您的變量之前,這基本上意味着,不要打擾如何,但我確保它會被初始化 – succcubbus
[這個類似的pro在休眠和解決方案瑕疵](https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-hell)的幫助? – miensol