I have a data class:
data class Example(
@SerializedName("id")
val id: String,
@SerializedName("url")
val url: String,
@SerializedName("more")
val more: String = "",
)
When I use Gson to instantiate Example:
val example1 = Gson().fromJson("{id: 1}", Example::class.java)
val example2 = Gson().fromJson("{id: 2}", Example::class.java)
I got two examples whose url is null, because there is no value for url.
Look at this expression:
val url: String = example1?.url ?: example2?.url ?: "aaaaaaaaaa"
println("url:$url")
I got url:null
But the expression below prints the default value url:aaaaaaaaaa:
val url: String = example1.url ?: example2.url ?: "aaaaaaaaaa"
println("url:$url")
Any body knows why? It is supposed to return the default value.