Строка, заданная в конструкторе, может быть возвращена в возвращаемый объект - PullRequest
0 голосов
/ 27 июня 2019

У меня следующая ситуация. Мое приложение использует API Trakt Tv для получения информации о фильмах. Нет прямой ссылки, чтобы получить плакат к фильму, и поэтому я создаю эту ссылку самостоятельно:

"http://img.omdbapi.com/?apikey=[apikey]&i=${movieTrack.movie?.movieId?.imdb!!}"

Эта строка:

movieTrack.movie?.movieId?.imdb!!

не равно нулю, но вся возвращаемая конструкция:

return Movie(
        name = movieTrack.movie?.name!!,
        year = movieTrack.movie?.year!!,
        movieId = movieTrack.movie?.movieId!!,
        watchers = movieTrack.watchersNumber,
        iconUrl = "http://img.omdbapi.com/?apikey=[apikey]&i=${movieTrack.movie?.movieId?.imdb!!}"
)

возвращает объект, который имеет обнуляемый URL-адрес значка. Итак, я не могу понять, как такая ситуация может произойти. В чем дело?

1 Ответ

0 голосов
/ 27 июня 2019

Nullable не является нулевым. Nullable означает, что значение МОЖЕТ быть нулевым, что может привести к проблемам, когда вы ссылаетесь на него в каком-то месте, где нулевые значения недопустимы.

Вот почему вы можете объявить вещи как «не обнуляемые», чтобы утверждать, что значение никогда не может быть нулевым, а другие переменные обнуляемыми, что означает, что они могут содержать нулевое значение.

Итак, в заключение:

Nullable: МОЖЕТ быть нулевым. (Осторожно, когда делаешь определенные вещи, может все испортить, но для большинства это стандартно)

Не обнуляется: НЕ ДОЛЖНО быть нулевым. (Но вы должны инвестировать некоторую работу, чтобы утверждать, что она никогда не может быть нулевой.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...