Android посыльный – писать с нулевым длинным

У меня есть мой классный класс. Статья:

class Article : Parcelable { var image: Long? = null var category: String? = null var videos: String? = null constructor(data: JSONObject) { if (condition) image = 50000L category = data.getString("category") videos = data.getString("videos") } private constructor(parcel: Parcel) { image = parcel.readLong() category = parcel.readString() videos = parcel.readString() } override fun writeToParcel(dest: Parcel, flags: Int) { dest.writeLong(image) // error here dest.writeString(category) dest.writeString(videos) } override fun describeContents(): Int = 0 companion object { @JvmField val CREATOR: Parcelable.Creator<Article> = object : Parcelable.Creator<Article> { override fun createFromParcel(parcel: Parcel): Article = Article(parcel) override fun newArray(size: Int): Array<Article?> = arrayOfNulls(size) } } } 

Но мой класс получает несоответствие типа при записи образа var. Он ожидает долгого и недолгого. Я понимаю, что это можно решить, если я сделаю что-то вроде этого:

 dest.writeLong(image!!) 

Но проблема в том, что этот var действительно может быть нулевым для моего контекста. Я не хочу либо определять свое изображение var как значение по умолчанию, как 0. Я действительно хочу, чтобы var оставался нулевым.

Есть ли способ написать nullable var?

В Java способ, которым я обрабатываю Long (в отличие от long ), имеет шаблон после исходного кода Android для записи других типов с нулевым значением: сначала вы пишете какое-то значение маркера, указывающее null vs non-null, а затем вы условно записываете реальная стоимость.

 private static final int NULL_ELEMENT_FLAG = 0; private static final int NONNULL_ELEMENT_FLAG = 1; public static void writeLong(Parcel dest, Long l) { if (l != null) { dest.writeInt(NONNULL_ELEMENT_FLAG); dest.writeLong(l); } else { dest.writeInt(NULL_ELEMENT_FLAG); } } public static Long readLong(Parcel in) { if (in.readInt() != NULL_ELEMENT_FLAG) { return in.readLong(); } else { return null; } } 

Надеюсь, вы сможете адаптировать это к kotlin.