Kotlin – getter nonnull para un campo que admite nulos

Soy nuevo con Kotlin y trato de volver a trabajar en un pequeño proyecto de Java para este nuevo idioma. Uso mongodb en mi proyecto y tengo una class, por ejemplo:

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 } 

Tengo que marcar el campo de id Como nulable ( var id: ObjectId? ) Debido a un constructor vacío. Cuando trato de acceder a este campo desde otra class, tengo que usar una verificación no nula: thePlayer.id!! . Pero la lógica de mi aplicación es que el campo de id nunca es nulo (mongo crea una instancia de Player e inmediatamente establece el campo de id). Y no quiero hacer un cheque no nulo en todas partes.

Intenté crear un getter no nulo, pero no comstack:

 var id: ObjectId? = null get(): ObjectId = id!! 

También puedo crear un stub para id y usarlo en el constructor, pero parece un hack sucio:

 val DUMMY_ID = new ObjectId("000000000000000000000000"); 

Entonces, ¿hay una solución para resolver el problema?

Yo personalmente uso una var privada prefijada por _ + public val en situaciones similares.

 class Example<out T> { private var _id: T? = null val id: T get() = _id!! } 

Para su situación, se vería así:

 @org.mongodb.morphia.annotations.Id private var _id: ObjectId? = null val id: ObjectId get() = _id!! 

Alternativamente, declare su variable como lateinit esta manera:

 @org.mongodb.morphia.annotations.Id lateinit var id: ObjectId