美文网首页
用 Kotlin 写 Android 9— Kotlin 的数据

用 Kotlin 写 Android 9— Kotlin 的数据

作者: jkwen | 来源:发表于2021-05-20 08:49 被阅读0次

    基本数据类型

    不同于 Java 分基础类型和包装类,在 Kotlin 里只有一种。这样做的好处是既能赋值也能调用方法,还能直接用于集合类。但这样也带来了效率问题,Kotlin 在变量属性,参数和返回值情况时会转成 Java 对应的基础类型,保证效率,而在泛型实现上只能用包装类。

    考虑到 Kotlin 里,Int 和 Int? 其实是两种类型,后者因为要包含 null 值,所以后者一直都会转换为 Java 的包装类。

    在属性定义时,本来想用 lateinit 来告知稍后初始化,但却提示不能用于基本数据类型,后来查了相关资料,确实不能这么用,注意 lateinit 不能用于基本数据类型

    还有一点和 Java 不同,Java 里一个 long 型变量可以赋值 int 值,而 Kotlin 里需要显示要求必须为 Long 型值。也就是说 Kotlin 里要求显示转换数字,var longNum: Long = 123L 才正确,var longNum: Long = 123 就是错误的。

    Any 和 Any?

    Any 对应到 Java 里就是 Object,即所有非空类的超类。那么 Any? 对应到的就是 Object 及 null。在 Kotlin 里只要是 Any 的子类,都有 toString, equals, hashCode 方法。

    Unit 和 Nothing

    这两个类型,前者很常用,后者不常用。前者虽说常用,但其实我们开发者用的并不多。Unit 对应的是 Java 里的 void,表示函数没有返回。但它其实也是返回类型,只不过可以隐式表达(即函数不写返回值时,默认就是返回它)。

    在实际使用上来讲,只要知道它也是一种类型,能表示函数不需要返回值的情况。

    至于名字的来源有两点原因,1.在函数式编程中的惯用表达,Unit 表示只有一个实例,2.如果用 Void 会很 Nothing 产生混淆。基于这两点选用了 Unit。

    Nothing 类型比较特殊,用作函数返回类型时表示函数不能正常结束,要么抛异常,要么无限循环等情况。它的含义是没有任何值,也可作为类型参数用于泛型。

    相关文章

      网友评论

          本文标题:用 Kotlin 写 Android 9— Kotlin 的数据

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