Kotlin:必需:kotlin.Boolean。 find:kotlin.Boolean?

我写了一个条件如下

if (subsriber?.isUnsubscribed && isDataEmpty()) { loadData() } 

由于我的订户可能为空。 显示上面的标题错误。 所以我把它如下

  if (subsriber?.isUnsubscribed as Boolean && isDataEmpty()) { loadData() } 

它看起来不是很好。 有没有更好的方法来做到这一点?

我通常用?:运算符来解决这种情况:

 if (subsriber?.isUnsubscribed ?: false && isDataEmpty()) { loadData() } 

这样,如果subscribernull ,则subsriber?.isUnsubscribed也是null并且subsriber?.isUnsubscribed ?: falsefalse ,这是希望得到的结果,否则切换到?: true

使用as Boolean来强制types化也是不安全的 ,如果遇到null ,将抛出一个exception。

还有,你只是要求:kotlin.Boolean。 find:kotlin.Boolean ? 你可以这样做:

 when(something?.isEmpty()) { true -> { } false -> { } null -> { } } 

我知道这是回答问题,但对于未来的观众可能会有所帮助