美文网首页
1-5空类型和智能类型转换

1-5空类型和智能类型转换

作者: 前端1号站 | 来源:发表于2017-12-28 16:25 被阅读0次

空类型安全问题
判断值是否为空,如果为空,则直接返回空,否则,返回相应值

fun getName():String?{
       return null                     
}
问号的意思是允许为空
fun main(args:Array<String>){

null类型

val name=getName()
println(name?.length)
判断name是否为空,为空就输出Null
}

声明可null类型但本身不为null

val value:String?="heloword"
-->
println(value!!.length)
告诉编译器,我知道他不为null,编译器可以继续往下走。
或者
if(value!=null)
println(value.length)

智能类型转换
声明对象
val parent:Patent=Child()
parent类型是Child的一个实例
if(parent is Child){
printIn(parent.name)
}

安全类型转换加?
val parent:Parent=Parent()
val child:Child?=parent as Child
相当于Java的强转类型。在这里加了问号是可null类型,那么,编译的时候就会出错。
解决方法是
val child:Child?=parent as? Child;
意思是如果child为null就返回null,这就避免了出错。

小结
1)任意类型都有可空和不可空的两种
编译器判断

->val notNull:String=null (X) 不能为空
->val nullable:Stirng?=null 可以为空
->notNull.length 不为空值可以直接运行
->nullable.length (X)可能为空,不能获取它的长度
->nullable!!.length 强制认定它不为空
->nullable?.length 若为空,则返回null

智能类型转换
java 类型转换

val sub:SubClass=parent as SubClass
类似Java的类型转换,失败则抛异常

安全类型转换

val sub:SubClass?=parent as?SubClass
如果转换失败,返回null,不抛异常。

if(parent is SubClass)parent<子类的成员>)
编译器尽可能推到类型,远离无用的类型转换
if(nullable!=null)nullable.length
这是对的,因为我们知道nullable不为空,它不为空则才能继续执行代码块。




相关文章

  • 1-5空类型和智能类型转换

    空类型安全问题判断值是否为空,如果为空,则直接返回空,否则,返回相应值 null类型 声明可null类型但本身不为...

  • Kotlin 进阶之路6 异常错误处理和类型检查

    Kotlin 进阶之路 目录 1、异常错误处理 2、类型检查与转换 空类型 任意类型都有可空和不可空两种 智能类型...

  • kotlin 基础之空类型和智能类型转换

    定义对象 定义为空的对象 定义不能为空的对象 总结:所以在定义对象时,kotlin 就不让你定义空对象,除非你告诉...

  • 2018-04-02 Kotlin数据类型

    1:要打印1+2=3 字符串模板$ 2:字符串比较 3:类和对象 4:空类型和智能类型转换 5:区间IntRang...

  • [Kotlin]空类型与智能转换

    空类型相关 任何类型都有可空和不可空两种 val notNull: String = null // 错误,不可为...

  • 可空类型

    可空类型: 类型转换的时候结果是可空类型,所以需要let 这种临时变量来获取。 隐式展开可空类型: 可空链式调用:...

  • 第三章 JavaScript中的数据间类型的转换

    数据的类型转换分为强制类型转换和非强制类型转换,强制类型转换也可以称为显示转换,非强制类型转换也可以称为隐式转换。...

  • Swift 类型转换

    为类型转换定义类层次 类型检查 is 向下类型转换as? || as! Any 和 AnyObject的类型转换S...

  • Struts2之数据校验和国际化

    数据校验和类型转换 数据校验:Interface Action: 类型转换:实现字符串类型和其它类型相互转换。 国...

  • 数据类型、运算符

    数据类型 Number类型 Boolean类型 Null和Undefined类型 强制类型转换 转换为Number...

网友评论

      本文标题:1-5空类型和智能类型转换

      本文链接:https://www.haomeiwen.com/subject/uggmgxtx.html