6:kotlin 空值安全(Null safety)

2023-11-23 15:44
文章标签 安全 kotlin null 空值 safety

本文主要是介绍6:kotlin 空值安全(Null safety),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Kotlin中,是可以有空值的。为了防止程序中出现空值问题,Kotlin实施了空值安全。空值安全在编译时而不是运行时检测到可能的空值问题。

空值安全是一组功能的组合,允许您:

  • 明确声明程序中允许空值的地方。
  • 检查空值。
  • 对可能包含空值的属性或函数进行安全调用。
  • 如果检测到空值,声明要采取的行动。

空值类型(Nullable types)

kotlin中,默认属性不支持空值,如果想要支持空值,需要在属性定义时使用?显示的设置

fun main() {var neverNull: String = "This can't be null"
//    neverNull = null    // 编译报错 - Null can not be a value of a non-null type Stringvar nullable: String? = "You can keep a null here"nullable = null
}

空值检测(Check for null values)

fun describeString(maybeString: String?): String {if (maybeString != null && maybeString.length > 0) {return "字符串长度 ${maybeString.length}"} else {return "空值或者null"}
}fun main() {var nullString: String? = nullprintln(describeString(nullString)) // 空值或者null
}

实际情况下可能还要检测字符串是否是多个空格组成的

安全调用(Use safe calls)

如果想避免代码中出现空值引发错误,可以使用安全调用运算符?.。如果对象的属性为空,安全调用运算符将返回空

fun lengthString(maybeString: String?): Int? = maybeString?.lengthfun main() { var nullString: String? = nullprintln(lengthString(nullString))  // null
}

安全调用可以采用链式编程 a?.b?.c

安全调用同样支持类方法

默认值(Use Elvis operator)

可以使用?:运算符在检测到空值时提供一个默认值

fun main() {var nullString: String? = nullprintln(nullString?.length ?: 9)  // 9
}

这篇关于6:kotlin 空值安全(Null safety)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/418984

相关文章

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高