¿Por qué las clases de datos de Kotlin pueden tener valores nulos en campos no anulables con Gson?
En Kotlin puedes crear undata class
:
data class CountriesResponse(
val count: Int,
val countries: List<Country>,
val error: String)
Luego puede usarlo para analizar un JSON, por ejemplo, "{n: 10}". En este caso tendrá un objetoval countries: CountriesResponse
, recibido deRetrofit
, Fuel
oGson
, que contiene estos valores:count = 0, countries = null, error = null
.
InKotlin + Gson - Cómo obtener una lista vacía cuando es nula para la clase de datos puedes ver otro ejemplo.
Cuando más tarde intentes usarcountries
, obtendrá una excepción aquí:val size = countries.countries.size
: "kotlin.TypeCastException: null no se puede convertir a tipo no nulo kotlin.Int". Si escribe un código y usa?
al acceder a estos campos, Android Studio resaltará?.
y advertir:Unnecessary safe call on a non-null receiver of type List<Country>
.
Entonces, ¿deberíamos usar?
en clases de datos? ¿Por qué una aplicación puede establecernull
a variables no anulables durante el tiempo de ejecución?