web-dev-qa-db-fra.com

Kotlin: null ne peut pas être la valeur d'un kotlin de type non nul

Comment attribuer une valeur nulle à ArrayList dans Kotlin?

J'essaie d'ajouter une valeur nulle à mon ArrayList personnalisé comme ça

var mList = ArrayList<CustomClass>()
mList.add(null)

Dans Java c'est possible mais comment puis-je y parvenir dans Kotlin? Je reçois

null ne peut pas être une valeur de kotlin de type non null

J'ai besoin d'insérer null valeur pour faire charger plus de fonctionnalités dans RecyclerView

11
Mohit Suthar

Ensuite, vous devez l'écrire de cette façon.

var mList = ArrayList<CustomClass?>()
mList.add(null)

Vous devez ajouter un ? après le type dans ArrayList car ? nous permet de mettre une valeur nulle.

14
Avijit Karmakar

Le système de types de Kotlin fait la différence entre les types nullables et les types non null. Par exemple, si vous déclarez une simple variable String et laissez le compilateur inférer son type, il ne peut pas contenir null:

var a = "text" //inferred type is `String`
a = null //doesn’t compile!

D'un autre côté, si vous voulez qu'une variable soit également capable de pointer vers null, le type est explicitement annoté avec un point d'interrogation:

var a: String? = "text"
a = null //Ok!

Dans votre exemple, le ArrayList est déclaré avec le type générique CustomClass, qui n'est pas nullable. Vous devez utiliser le type nullable CustomClass? À la place. Vous pouvez également utiliser les fonctions de bibliothèque standard de Kotlin pour créer des instances de listes , de préférence celles en lecture seule .

var mList = listOf<CustomClass?>(null)

Sinon, mutableListOf() ou également arrayListOf() vous aidera.

6
s1m0nw1