kotlin学习day7:null安全
来源:互联网 发布:mac解压缩软件zip 编辑:程序博客网 时间:2024/05/23 07:23
如果你是一个程序开发者,无论使用何种语言,我相信大家都遇到一个问题:NullPointException,尽管大部分语言已经尝试各种办法去应对这种让人头痛的情况。Kotlin在处理null安全方和其他语言一样,都围绕着一个黄金准则:如果变量是null,编译器强制我们使用某种方式去处理。
1.Kotlin中的null声明
- 指定一个变量是可null是通过在类型的最后增加一个问号。
因为Kotlin中一切都是对象,甚至是Java中的基本数据类型,所以下面我们声明一个可为null的Integer对象
var a: Int? = null
当我们将一个对象标记为可null,编译器就会知道他,因此我们在使用它之前,必须进行null检查,当然Kotlin中还有一个特性,当我们对一个标记为可null对象进行检测之后,编译器会自动将它转型为不可null类型。
if (a != null) { a.toString() }
2.安全访问操作符(?)
当我们代码越来越多,创建对象越来越多的时候,我们需要编写大量的代码去进行null检测吗?当然不是,因为大多数时候我们不需要使用Null类型,因此也不需要检测他,只有彻底弄清一个对象可以为null时,我们才需要那样做。Kotlin基于这一点,也给我们提供了一个简洁的方案
var a: Int? = null a?.toString()
?是Kotlin中的安全访问操作符,只有a不为null的时候才会执行它否则什么也不做,当然我们也可以使用操作符(?:)
- case1
var a: Int? = null Log.i("Lbjfan", a?.toString() ?: "lbjfan")
运行结果
09-06 22:18:59.774 21040-21040/com.example.admin.kotlindemo I/Lbjfan: lbjfan
- case2
var a: Int? = null a = 0 Log.i("Lbjfan", a?.toString() ?: "lbjfan")
运行结果
09-06 22:18:59.774 21040-21040/com.example.admin.kotlindemo I/Lbjfan: 0
3.可null性可Java库
在Java中,所有对象可以被定义为null。所以我们不得不处理大量潜在的在现实中不可能是null的null变量。很幸运,新版本的Android开始使用 @Nullable 和 @NonNull 注解来辨别参数是否可以是null或者否个函数是否可以返回null。当我们怀疑时,我们可以进入源码去检查是否会接收到一个null对象。现在开始,当一个Jetbrains的 @Nullable 注解(这个与Android的注解不同)被注解在一个非null的变量时,就会获得一个警告。相对的没有发生在 @NotNull 注解上。
- kotlin学习day7:null安全
- Kotlin学习笔记——Kotlin中的null安全
- Kotlin- 空安全(Null Safety)
- Kotlin-32.空指针安全/null安全(Null Safety)
- Kotlin 空安全(null-safety):再见 NullPointerException
- kotlin中学习笔记——null
- Kotlin 其他(八) --- 空安全(Null Safety)
- Kotlin学习笔记(2)- 空安全
- Kotlin学习(5)空类型安全
- java学习笔记day7
- java 学习day7
- Android学习笔记day7
- java学习day7
- Java学习--day7
- python学习日志--day7
- Java学习day7
- Kotlin-null的处理
- Kotlin-Null 值安全性
- 执行环境和作用域
- 实训day2
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- POJ 2240 Floyd的变式
- 大数据预科班6
- kotlin学习day7:null安全
- tomcat 源码学习——准备工作
- qt5 槽的使用的简单例子(connect函数)
- Codeforces 486E. LIS of Sequence
- 微信小程序语音识别探索
- Java使用org.json.jar构造和解析Json数据
- bzoj3715 [PA2014]Lustra 暴力
- 关于Tomcat7启动闪退的解决办法
- 快速排序算法及JAVA实现