如题,如该错误:java.lang.NullPointerException: gson.fromJson(colorState….value.toString(), intType) must not be null
一个空指针错误,弄了两个非空判断,怎么依然在内容为空的情况下进入到代码块里啊?... 另有没有什么办法啊?
// 获取本地数据
val colorStateList = storeManager.getSelectedApp.collectAsState(null)
if (colorStateList.value?.isNotEmpty() == true && colorStateList.value != null) {
val intType = object : TypeToken<ArrayList<Int>>() {}.type
val dataList: ArrayList<Int> = gson.fromJson(colorStateList.value.toString(), intType)
selectedDataList = dataList
}
这个是编译器的问题,他没有联想到前面已经做了非空判断
可以在intType后面加上两个!!,表示由开发者确保不会出现空指针
再保险点,外面再try{}catch一下
用了kt还能有空指针问题?用let代码块包裹不可以吗?