问题
当使用kotlin的时候 bean.属性 属性为null的时候 var a:string = data.属性 这个时候会出现空指针问题.
val left_icon: String = dataBean.left_icon
当 left_icon 为null 的时候 这样调用会崩溃.
原因分析:
在java 中 String类型的数据可以为""和null,但是在kotlin 中 String 默认是不可空类型 当传入null类型会爆发空指针.这个时候追加一个?表示可以为空类型
说明:
- var str:String="1111" str =null 是不行的 不能为空
- var str:String?="1111" str =null 是可以的 因为String? 表示可为空 但是使用这个变量的时候需要做非空判断
在 Kotlin 中,普通类型默认是不可为空的,若想让变量能存储 null 值,就得使用 ? 来声明可空类型
问题多发场景:
在Java和kotlin 混搭项目中 因为java String表示""和null ,然而kotlin 的String 默认只表示""字符串 不能表示Null 所以 需要加上?做可空处理
修改方案
1: kotlin 中接收属性的时候 用 String?接收表示可空可值
DemoBean{
public String name=""
}
var name:String?=demoBean.name?:""
2:保证属性不为空
当类型是Java的bean 的时候默认值 为"" 没问题,别的地方设置null之后 再给kt调用依然会崩溃.
例如:
Gson() String类型的数据没值的时候默认会赋值给null 这个时候再调用会崩溃