自最新更新以来Android Studio给出了以下警告:
预期类型不接受Kotlin中的空值,但Java中的值可能为null
此警告显示在以下代码段中:
data class Person(
@SerializedName("surname")
surname : String
) {
constructor(parcel: Parcel) : this(
parcel.readString()
)
//Parceable implementation
}
有办法解决它,并隐藏此警告:
首先是使值类型为nullable,这意味着将String更改为String?。
第二是使readString始终返回非null值 - readString()!!
我的问题是哪种方法更好。如果值不能为空,readString是否可能返回null?
实际上,它要容易得多
内部应用程序的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