可分辨的readString()可以为空的警告

问题描述 投票:1回答:1

自最新更新以来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?

android android-studio kotlin parcelable parcel
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.