Je suis nouveau avec Kotlin et j'essaie de retravailler un petit projet Java dans ce nouveau langage. J'utiliser MongoDB dans mon projet et j'ai une classe, par exemple:Kotlin - getter nonnull pour un champ nullable
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
}
je dois marquer id
terrain annulable (var id: ObjectId?
) en raison du constructeur vide. Lorsque j'essaie d'accéder à ce champ d'une autre classe, je dois utiliser une vérification non nulle: thePlayer.id!!
. Mais la logique de mon application est que le champ id
n'est jamais nul (mongo crée une instance de Player et définit immédiatement le champ id). Et je ne veux pas faire un chèque non nul partout.
J'ai essayé de faire un getter non nul, mais il ne compile pas:
var id: ObjectId? = null
get(): ObjectId = id!!
Je peux aussi faire quelques stub pour id et de l'utiliser dans le constructeur, mais cela ressemble à une bidouille:
val DUMMY_ID = new ObjectId("000000000000000000000000");
Y a-t-il une solution de contournement pour résoudre le problème?
mis 'lateinit' avant votre variable , cela signifie essentiellement, ne pas déranger, mais je m'assure qu'il sera initialisé – succcubbus
Est-ce que [ce pro similaire blem en hibernation et solution] (https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-hell) aide? – miensol