- 课程名称:一课掌握Kotlin 突破开发语言瓶颈
- 章节名称:
- 第4章:类型初步
- 4-4智能类型转换
- 第4章:类型初步
- 讲师姓名:bennyhuo
- 时间:2022-08-13 09:39
课程内容
-
Kotlin智能类型转换
-
Java中父类类型变量,可以用子类类型实例赋值,但如果要使用子类方法,需要强转为子类类型,才能运用
-
Kotlin简化上述步骤
val kotliner: Kotliner = Person("Benny", 20)//Kotliner是子类,继承了父类Person if(kotliner is Person) {// 此处的is相当于Java的instanceof println((kotliner as Person).name)// as是类型强转的方法 println(kotliner.name)// 可以智能转换,因为在if语句中已经判断过了 }
var value: String? = null value = "benny" if (value != null) {// 此的类型已经从之前的String?自动转换成String println(value.length) }// 在此if语句内部,value都是String类型,出了此范围就会变回String?类型
-
不能进行智能转换的情况
var tag: String? = null fun main() { if (tag != null) { println(tag.length)// 此处编译器会报错 // tag是顶级变量,可能被其他程序或进程修改其值 } }
-
类型的安全转换
val kotliner: Kotliner = ... println((kotliner as? Person)?.name)//强制类型转换如果失败,会返回null
-
-
为防止空指针异常的建议:
- 尽可能使用val来声明不可变引用,让程序的含义更加清晰明确
- 尽可能减少对函数外部变量的访问,也为函数式编程提供基础
- 必要时创建局部变量指向外部变量,避免因它变化引起程序错误
学习心得
Kotlin在解决Java编码的问题同时,会不会在制造新的问题?
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦