Kotlin:必需:kotlin.Boolean。 find:kotlin.Boolean?
我写了一个条件如下
if (subsriber?.isUnsubscribed && isDataEmpty()) { loadData() }
由于我的订户可能为空。 显示上面的标题错误。 所以我把它如下
if (subsriber?.isUnsubscribed as Boolean && isDataEmpty()) { loadData() }
它看起来不是很好。 有没有更好的方法来做到这一点?
我通常用?:
运算符来解决这种情况:
if (subsriber?.isUnsubscribed ?: false && isDataEmpty()) { loadData() }
这样,如果subscriber
为null
,则subsriber?.isUnsubscribed
也是null
并且subsriber?.isUnsubscribed ?: false
为false
,这是希望得到的结果,否则切换到?: true
。
使用as Boolean
来强制types化也是不安全的 ,如果遇到null
,将抛出一个exception。
还有,你只是要求:kotlin.Boolean。 find:kotlin.Boolean ? 你可以这样做:
when(something?.isEmpty()) { true -> { } false -> { } null -> { } }
我知道这是回答问题,但对于未来的观众可能会有所帮助
- Kotlin三元条件运算符
- Kotlin有垃圾收集器吗? 如果是这样,基于哪种算法?
- 使用String name()声明实现Java接口的Kotlin枚举
- 在Instant App中应用插件“kotlin-android”会导致“null不能转换为非空types的com.android.build.gradleBasePlugin”
- Android Studio在第二次构建后显示Kotlin依赖警告
- 如何从一个枚举类和kotlin中的一个字符串获取原始types的枚举值
- 在Android模拟器上调用REST API会导致应用程序崩溃
- 无法在Android中为Kotlin中的Activity类编写主要构造函数
- 如何将一个二维数组作为parameter passing给Kotlin中的一个函数