美文网首页
Kotlin 学习笔记 1 :空安全 20200327

Kotlin 学习笔记 1 :空安全 20200327

作者: code点点DD | 来源:发表于2020-03-27 14:09 被阅读0次

两句话:

1、语法上,要求不能null的,如果编译时能发现违反了不能null的约定。则编译不通过。

总有变量,编译时,是不能够知道是不是为空。这个时候还是要进行空判断。

2、对于这个空判断。kotlin的语法糖提供了简易的判断方法;(来实现所谓的空安全)

a、!!如果是空就nullpointexception(懒惰,没有默认值)

b、?如果是null,返回默认值,而不是exception。(就空安全了())😅

c、varString?.length()?:-1 类似上面的情况,不过将返回的null修改为一个默认值。

友情连接:友情连接

这篇文章说的比较合理:尽可能避免NPE,没有办法消除

空安全符号:

非null 申明:String

可null 声明: String?

可 null 调用:varName?.length()  null 时返回null

可null 调用:如果varName?.length()?:-1 与上面一个不同的是,返回一个默认值而不是null

保证不null:调用:varName!!.length()  如果保证失败,就NPE

类型安全转换:

避免ClassCastException,

val aInt: Int? = a as? Int  如果失败,返回null而不是 ClassCastException

总结来说:

Kotlin要求:对于一个变量,要么你很自信,保证不为null;要么要把null的不确定性申明出来。二者必取其一。

对于一个变量,你要以保证不空的语法描述;(String , stringVar.length)

        那么如果还是出现了空:

           1、 编译时不通过,尽早发现是好事;

            2、运行时:不好意思,还是会NPE

如果你不能保证不为Null 那么要把这个不确定性,以语法的形式显示说明。

kotlin知道后会尽可能的帮你保证null安全。

如果不告诉kotlin这种不确定性,不好意思。Kotlin帮不了你。

转向上面👆那种情况。kotlin会以为你很自信,不为null。

       1、 申明:String? 调用 varString?.  如果null那么返回null而不是NPE

       2、 以上情况的增强版:如果null,那么返回一个默认值,而不是null

       3、最后,一个nullAble的变量,你却很自信。好:那就varString!!.length()👉如果是你自信过头了。不好意思。还是NPE

技巧:

我们的首要、主要精力应该花费在变量声明时:决定是否绝不null,或者无法确定是否null

如果你申明为,无法确定是否null,那么剩下的交由kotlin,它会尽力帮助你。

只要你不是过分自信,结果自信过头(申明了一个会null的变量为String ;一个可null的变量varString!!.length())

NPE就不会那么容易出现了。

相关文章

  • Kotlin 学习笔记 1 :空安全 20200327

    两句话: 1、语法上,要求不能null的,如果编译时能发现违反了不能null的约定。则编译不通过。 总有变量,编译...

  • Android开发kotlin学习(二)

    1.kotlin的空安全 为啥子说kotlin是空安全的?和Java相比,kotlin的空安全可以带来哪些便利之处...

  • Kotlin学习笔记-[空安全]

    前言 kotlin是如此的令人激动,在语法层面上就杜绝了程序中最常出现的,最令人厌恶的空指针异常。 可空与非空类型...

  • Kotlin学习之空安全

    Kotlin学习之空安全 Kotlin相对于Java有许多改良的地方,空安全就是其中的一部分,Kotlin因此解决...

  • Kotlin - 空安全

    1.Kotlin空安全介绍 Kotlin空安全可消除来自代码空引用的危险。 2.什么是空引用? 许多编程语言(包括...

  • Kotlin学习笔记(2)- 空安全

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正。如果你觉得我的文章对你有用,欢迎关注我,我们一起...

  • 2017-07-18-kotlin Android基础

    kotlin Android基础 1,实现一个基本的数据类 2,空安全: Kotlin,如很多现代的语言,是空安全...

  • Kotlin学习笔记:类和接口

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin学习笔记:概述

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

  • Kotlin 学习笔记:基本语法和函数

    Kotlin学习笔记:概述Kotlin学习笔记:基本语法和函数Kotlin学习笔记:类和接口Kotlin学习笔记:...

网友评论

      本文标题:Kotlin 学习笔记 1 :空安全 20200327

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