Parceable readString()可为空的警告

时间:2018-09-05 12:46:16

标签: android android-studio kotlin parcelable parcel

由于最新的更新,Android Studio给了我以下警告:

  

期望的类型在Kotlin中不接受null,但是在Java中该值可能为null

此警告显示在以下代码被截断的情况下:

data class Person(

    @SerializedName("surname")
    surname : String

) { 
    constructor(parcel: Parcel) : this(
        parcel.readString()
    )
    //Parceable implementation
}

有一种方法可以解决它,并隐藏此警告:

首先是使值类型可为空,这意味着将 String 更改为 String?

第二个方法是使readString始终返回非空值- readString()!!

我的问题是哪种方法更好。如果该值不能为空,则readString是否可能返回null?

1 个答案:

答案 0 :(得分:1)

实际上要容易得多

内部应用程序的build.gradle

androidExtensions {
    experimental = true
}

并像这样更改班级:

@Parcelize
data class Person(
    val surname: String
): Parcelable

关于您的问题-实际上没有。处理像您这样的情况的最佳方法是:

  1. 写入parcel.readString() ?: "",这意味着如果结果为null,它将返回空字符串
  2. 编写parcel.readString() ?: throw IllegalStateException("Error happened, do something"),这意味着它将引发异常,而您根本不需要处理任何可空性。

我个人会坚持使用选项#1