Вызов по ненулевому типу может быть уменьшен - измените вызов на isEmpty - PullRequest
0 голосов
/ 14 июня 2019

Я использую код ниже -

editText.text.toString().isNullOrEmpty()

и получаю предупреждение ниже lint-

Звонок на ненулевой тип может быть уменьшен

Когда я щелкаю правой кнопкой мыши предупреждение lint, он говорит -

Изменить вызов на isEmpty

Когда я проверяю код -

@Nullable public Editable getText() {
        if (Build.VERSION.SDK_INT >= 28) {
            return super.getText();
        }
        // A bug pre-P makes getText() crash if called before the first setText due to a cast, so
        // retrieve the editable text.
        return super.getEditableText();
    }

, чтоозначает, что editText.text обнуляется

/**
 * Returns a string representation of the object. Can be called with a null receiver, in which case
 * it returns the string "null".
 */
public fun Any?.toString(): String

, что означает, что toString() может возвращать ноль

Тогда как ediText.text.toString().isEmpty() является лучшим вариантом, поскольку он может генерировать исключение нулевого указателя?

1 Ответ

1 голос
/ 14 июня 2019

Когда вы вызываете toString(), результирующая строка никогда не равна нулю (следовательно, isNullOrEmpty() == isEmpty) - любые нулевые значения заменяются на строку "null".

, так как это нене то, что вы хотите проверять, вы должны прекратить использовать toString() - просто используйте isNullOrEmpty() напрямую:

editText.text.isNullOrEmpty()
...