Почему Android Studio указывает, что объект может быть нулевым, если он не может быть? - PullRequest
0 голосов
/ 28 февраля 2019

Это код, который я использую:

ref.get().addOnCompleteListener(task -> {
    if (task.isSuccessful()) {
        DocumentSnapshot document = task.getResult();
        if (document.exists()) {
            Log.d(TAG, "DocumentSnapshot data: " + document.getData());
        }
    }
});

И вот как Android Studio выделяет ошибку:

enter image description here

Как я понимаю из этого ответа :

Успешно выполненное задание никогда не пройдет null для DocumentSnapshot.

Какя могу решить это без проверки на ничтожность?Спасибо!

1 Ответ

0 голосов
/ 28 февраля 2019

Почему Android Studio указывает, что объект может быть нулевым, если он не может быть?

Поскольку lint не может знать.document.exists() может вообще вернуть null, и поэтому вы видите предупреждение.Lint выполняет базовые проверки и не знает подробностей об Firebase API.Вы даже можете воспроизвести это поведение с помощью Java Core API.

Как я могу решить эту проблему без проверки на недействительность?Спасибо!

Если вы на 100% уверены, что оно никогда не может быть нулевым, вы можете использовать

@ SuppressWarnings ("ConstantConditions")

Но я бы не сталрекомендуем, потому что вы не знаете, изменится ли API Firebase в будущем.Может быть, следующая версия Firebase разрешит нулевой возврат.

...