¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta