Mam backend, który zwraca mi trochę jsona.Kotlin nie wartość zerowalna może być pusty?
I analizować je do mojej klasy:
class SomeData(
@SerializedName("user_name") val name: String,
@SerializedName("user_city") val city: String,
var notNullableValue: String)
użytku fabrycznego konwerter gson:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ENDPOINT)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
I w moim interfejsu:
interface MyAPI {
@GET("get_data")
Observable<List<SomeData>> getSomeData();
}
Potem pobierać dane z serwera (z rxJava) bez żadnego błędu. Ale spodziewałem się błąd, ponieważ myślałem, że powinienem zrobić coś takiego (aby zapobiec błąd konwertera GSON, ponieważ notNullableValue
nie jest obecny w moim odpowiedzi JSON):
class SomeData @JvmOverloads constructor(
@SerializedName("user_name") val name: String,
@SerializedName("user_city") val city: String,
var notNullableValue: String = "")
Po odbiorze danych z backend i analizowany na moje Klasa SomeData z konstruktorem bez wartości def, wartość notNullableValue == null.
Jak rozumiem, wartość zerowa może być zerowa w Kotlin?
Proszę sprawdzić, czy to pomaga: https://stackoverflow.com/a/39963353/2196460 – hotkey
jego wyjaśnienia sytuacja z wartością def w konstruktorze. Ale w mojej sytuacji mam wadę. – jQuick
zmienna 'notNullableValue' została zmieniona przez gson po utworzeniu. ponieważ jest 'var' nie' val'. –