1、空类型
fun getName():String{
return null;
}
fun main(args: Array<String>){
val name = getName()
println(name?.length)//表示如果name为null,则返回null,不会调用length属性,避免空指针
//也可以如下调用
val name = getName()?:return//表示如果name为null,则停止往下继续执行
println(name.length)//有了以上的判断,该语句则会安全执行
//!!使用
val age: String? = “123”//表示有可能为null
println(age!!.length)//告诉让编译器age字段一定不会为null,如果为null则会报异常
}
2、类型转换
var parent:Parent = Child()
if(parent is Child){
//判断是否为child类型,如果是则自动进行类型转换
}
var chi: Child = parent as Child//类似于java中的类型转换,如果转换失败会抛出异常
var chi: Child? = parent as? Child//类似于java中的类型转换,如果转换失败返回null,不会抛异常