Какие способы избежать !! в Kotlin коде? - PullRequest
0 голосов
/ 29 марта 2020

Я рассматриваю фрагмент кода, где используется Lott ie Вот код

class ProgressToProgress(context: Context) : LottieIconTransition(
LottieCompositionFactory.fromRawResSync(
    context, R.raw.downloadprogress).value!!)

, где

  @Nullable public V getValue() {
return value;}

этот getValue() метод взят из Lott ie библиотека, поэтому я не контролирую ее. что мне там не нравится то !! в приведенном выше и, что интересно, конструктор LottieIconTransition выглядит так, что для него задан параметр по умолчанию. Конструктор param

class LottieIconTransition(private val lottieComposition: LottieComposition = LottieComposition())

Я хотел бы знать, какой наилучшей практики следует избегать имея !! в коде?

1 Ответ

2 голосов
/ 29 марта 2020

Это то, что я имел в виду, используя фабричный метод.

class ProgressToProgress {

    constructor() : super()
    constructor(res: LottieResult<LottieComposition>) : super(res)

    companion object {
        @JvmStatic
        fun create(context: Context): ProgressToProgress {
            val res = LottieCompositionFactory.fromRawResSync(
                    context, R.raw.downloadprogress).value
            return if (res == null) {
                ProgressToProgress()
            } else {
                ProgressToProgress(res)
            }
        }
    }
}

Однако это большая проблема, вы можете указать значение по умолчанию самостоятельно, например:

class ProgressToProgress(context: Context) : LottieIconTransition(
        LottieCompositionFactory.fromRawResSync(
            context, R.raw.downloadprogress).value ?: <respecify super default parameter value>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...