Parceable readString () обнуляемое предупреждение - PullRequest
0 голосов
/ 05 сентября 2018

С момента последнего обновления Android Studio выдает следующее предупреждение:

Ожидаемый тип не принимает нулевые значения в Kotlin, но значение может быть нулевым в Java

Это предупреждение появляется при следующем урезанном коде:

data class Person(

    @SerializedName("surname")
    surname : String

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

Есть способ исправить это и скрыть это предупреждение:

Сначала необходимо сделать тип значения обнуляемым, что означает изменение String на String? .

Во-вторых, readString всегда возвращает ненулевое значение - readString () !!

У меня вопрос, какой подход лучше. Возможно ли, что readString вернет ноль, если значение не может быть обнуляемым?

1 Ответ

0 голосов
/ 05 сентября 2018

Это намного проще, на самом деле

Внутри приложения build.gradle

androidExtensions {
    experimental = true
}

И измени свой класс следующим образом:

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

Что касается вашего вопроса - нет, вообще-то. Лучший способ справиться с такой ситуацией:

  1. для записи parcel.readString() ?: "", что означает, что если результат равен нулю, он вернет пустую строку
  2. , чтобы написать parcel.readString() ?: throw IllegalStateException("Error happened, do something"), что означает, что это вызовет исключение, и вам вообще не придется иметь дело с какой-либо обнуляемостью.

Лично я бы выбрал вариант # 1

...