मेरे पास बैकएंड है जो मुझे कुछ जेसन लौटाता है।कोटलिन शून्य नहीं मूल्य शून्य हो सकता है?
class SomeData(
@SerializedName("user_name") val name: String,
@SerializedName("user_city") val city: String,
var notNullableValue: String)
उपयोग gson कनवर्टर कारखाना:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ENDPOINT)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
और मेरी इंटरफ़ेस में:
मैं अपने वर्ग के लिए यह पार्स
interface MyAPI {
@GET("get_data")
Observable<List<SomeData>> getSomeData();
}
तो मैं सर्वर से डेटा (पुनः प्राप्त आरएक्सजेवा के साथ) बिना किसी त्रुटि के। लेकिन मैं एक त्रुटि की उम्मीद क्योंकि मैंने सोचा (क्योंकि notNullableValue
मेरी JSON उत्तर में मौजूद नहीं है GSON कनवर्टर त्रुटि को रोकने के लिए,) मैं इस तरह कुछ करना चाहिए:
class SomeData @JvmOverloads constructor(
@SerializedName("user_name") val name: String,
@SerializedName("user_city") val city: String,
var notNullableValue: String = "")
डेटा बैकएंड से प्राप्त हुआ है और करने के लिए पार्स किया गया है के बाद मेरी डिफ वैल्यू के बिना कन्स्ट्रक्टर के साथ कुछडेटा क्लास, का मूल्य नहीं है NullableValue == null।
जैसा कि मुझे समझ में आता है कि कोटलिन में शून्य नहीं हो सकता है?
कृपया देखें अगर यह मदद करता है: https://stackoverflow.com/a/39963353/2196460 – hotkey
इसके समझाने कन्स्ट्रक्टर में डीफ़ वैल्यू के साथ स्थिति। लेकिन मेरी स्थिति में मेरे पास मूल्य मान नहीं है। – jQuick
बनाया गया के बाद जीसन द्वारा 'notNullableValue' बदल दिया गया था। क्योंकि यह 'var'' val' नहीं है। –