kotlin : Unit、Nothing、Any

2023-12-23 04:08
文章标签 kotlin unit nothing

本文主要是介绍kotlin : Unit、Nothing、Any,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Unit、Nothing、Any

//Unit与Nothing之间的区别是,
// Unit类型表达式计算结果返回值是Unit;
// Nothing类型表达式计算结果永远是不会返回的,与java中void相同。
// Nothing?可以只包含一个值 null 。//Unit : 无返回值,可省略
// Kotlin 中Unit类型实现了与java中void一样的功能。
fun test11(): Unit {}    //kotlin.Unit
fun test12() {}          //kotlin.Unit//返回值Nothing :类型为java.lang.Void
// Nothing?唯一允许的值是null,可被用作任何可空类型的空引用。
fun test21(): Nothing? = null   //null//java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Void
// fun test22(): Nothing = 1 as Nothingfun test31(): Any = ""          //
fun test32(): Any = 1           //1
fun test33(): Any = false       //false

Nothing与Nothing?区别:

在java中void不能是变量的类型,也不能作为值打印输出。
但是在java中有个包装类Void是void的自动装箱类型。
如果你想让一个方法的返回类型永远是null的话,可以把返回类型为这个大写的Void类型。
这个Void对应的类型是Nothing?,其唯一可被访问的返回值也是null,Kotlin中类型层次结构最底层就是Nothing

如果一个函数返回值是Nothing,那么这个函数永远不会有返回值。
但是我们可以使用Nothing来表达一个从来不存在的返回值。

Unit与Nothing之间的区别:

Unit类型表达式计算结果返回值是Unit;

Nothing类型表达式计算结果永远是不会返回的,与java中void相同。

Nothing?可以只包含一个值 null 。

Nothing?与Any?区别:

Nothing?唯一允许的值是null,可被用作任何可空类型的空引用。

Any?是可空类型的根。Any?是Any的超集,Any?是Kotlin类型层次的最顶端。

总结:

unitnothingnothing?anyany?
返回unit无返回null返回任意类型返回任意类型包含null
解释-Nothing类型表达式计算结果永远是不会返回的,与java中void相同。Kotlin中类型层次结构最底层就是Nothing,java.lang.Void::class 与 kotlin.Nothing::class 是等价的。Nothing?唯一允许的值是null,可被用作任何可空类型的空引用。-Any?是可空类型的根。Any?是Any的超集,Any?是Kotlin类型层次的最顶端。

这篇关于kotlin : Unit、Nothing、Any的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

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 循环的区别三、高

kotlin中的数据转换方法(示例详解)

《kotlin中的数据转换方法(示例详解)》这篇文章介绍了Kotlin中将数字转换为字符串和字符串转换为数字的多种方法,包括使用`toString()`、字符串模板、格式化字符串、处理可空类型等,同时... 目录1. 直接使用 toString() 方法2. 字符串模板(自动转换)3. 格式化字符串(控制输

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine