Tag: kotlin null safety

kotlin反射检查可空类型

我怎样才能测试一个KType变量是否包含一个可为空的kotlin类型的值(eG Int?)? 我有 var type: KType 来自KProperty<*>.returnType变量,我需要检测它是否等于某些kotlin类型(Int,Long等)。 这适用于: when (type) { Int::class.defaultType -> … Long::class.defaultType -> … else -> … } 但是这只适用于不可为空的类型,所以第一个分支不匹配Int? 然而,我还没有弄清楚,我可以检测到类型是Int? 其他则显而易见,但不是那么好 type.toString().equals("kotlin.Int?")

Kotlin可为空的变量赋值

在Kotlin中,这个代码是否有更简短的语法: if(swipeView == null){ swipeView = view.find<MeasureTypePieChart>(R.id.swipeableView) } 首先我试过这个: swipeView ?: view.find<MeasureTypePieChart>(R.id.swipeableView) 但后来我意识到这不是一个任务,所以代码什么都不做。 然后我试着: swipeView = swipeView ?: view.find<MeasureTypePieChart>(R.id.swipeableView) 哪个工作,但有点冗长。 我会期待这样的事情: swipeView ?= view.find<MeasureTypePieChart> 但不幸的是,这是行不通的。 有没有什么办法用一个简短的语法来完成这个? 我知道我可以这样做: variable?.let { it = something } which works.

Kotlin无效检查错误

我使用Java库。 在异常类中有“localizedMessage”字段和“描述”字段。 我不知道为什么,但是“描述”(即java String)被识别为String! 通过Kotlin,当“description”为null时,条件描述== null返回false。 代码示例: mvpView?.showToast(it.description?:it.localizedMessage) 或没有猫王: if (it.description.isNullOrBlank()) { mvpView?.showToast(it.localizedMessage) } else { mvpView?.showToast(it.description) } 它总是试图显示“描述”,但在调试模式下的“评估表达式”在描述== null(按预期)返回true。 Kotlin版本是1.1.1