由于最新的更新,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?
答案 0 :(得分:1)
实际上要容易得多
内部应用程序的build.gradle
androidExtensions {
experimental = true
}
并像这样更改班级:
@Parcelize
data class Person(
val surname: String
): Parcelable
关于您的问题-实际上没有。处理像您这样的情况的最佳方法是:
parcel.readString() ?: ""
,这意味着如果结果为null,它将返回空字符串parcel.readString() ?: throw IllegalStateException("Error happened, do something")
,这意味着它将引发异常,而您根本不需要处理任何可空性。我个人会坚持使用选项#1