在构造函数中设置的字符串在返回的对象中可以为空

时间:2019-06-27 08:43:34

标签: kotlin

我有以下情况。我的应用使用Trakt电视的API来获取有关电影的信息。没有将海报张贴到电影的直接链接,因此我自己构造了此链接:

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

此行:

movieTrack.movie?.movieId?.imdb!!

不是null,而是整个返回构造:

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 :(得分:0)

Nullable不为null。可空值表示该值可以为空,这在您不允许某个空值的地方引用它时可能会导致问题。

这就是为什么您可以将东西声明为“不可为空”的原因,以断言该值永远不能为null,其他变量为可为空,这意味着它们可以包含null。

因此,结论:

可为空:可以为空。 (在做某些事情时要小心,可能会弄乱事情,但对大多数事情来说都是标准的)

不可为空:绝不能为空。 (但是您必须投入一些工作来断言它永远不会为空。)