只有真的入了坑,才知道坑有多深
null问题
Kotlin中属性在声明的时候会遇到这几种情况:
-
属性声明
var p:A = A() lateinit var p:A var p:A? = null
你真的清楚在什么情况下应该用哪种声明方式吗?
事实是如果你用错了方式,空指针的问题还是会困扰着你 -
重载函数
重载函数中的参数,在转换为Kotlin的时候,一定要密切注意参数是否可为空,如果可为空,得在类型后面加上?,要不然在实际运行的时候就会出错。
-
if 判断非空条件下,编译器无法自动识别这种非空情况,会提示错误
Android Studio并不是那么智能,如果你不使用!!符号的话,在非空条件下,里面使用变量的时候,依然是一片红。
可变参数问题
因为你不可能把可变参数声明成数组的形式,如String[] ,你只能声明成Array<String> 类型,如果这个类型的变量并不能确定是非空的,那么问题就来了,你需要调用一个传入可变参数的Java方法时,你怎么转化?
可以用*value的方法来转换,但是前提是value为非空类型
。。。。。持续更新,这里面有的问题可能只是我的理解不到位,欢迎高手指点。
特定类型的多维数组
用Java表示多维数组,不论是什么类型的,表示起来还是很简洁的,但是用Kotlin表示多维数组就不是那么容易了。
网友评论