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

相关文章

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

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Kotlin高阶函数与Lambda表达式及内联函数的介绍

目录 1、高阶函数1.1、什么是高阶函数?1.1.1、不带返回值的高阶函数1.1.2、带参数且带返回值的高阶函数1.1.3、与一般的函数进行比较 1.2、如何使用?1.3、高阶函数有什么作用? 2、Lambda表达式2.1、什么是Lambda表达式?2.1.1、无参数的写法2.1.2、有参数的写法2.1.3、有参数且有返回值的写法 2.2、如何使用?2.3、Lambda表达式有什么作用? 3

android kotlin复习 Anonymous function 匿名函数

1、还是先上个图,新建kt: 2、代码: package com.jstonesoft.myapplication.testfun main(){val count = "helloworld".count()println(count);println("------------------------")var count2 = "helloworld".count(){it ==

android开发---Kotlin语言基础语法

目录 数据打印 变量 函数 程序逻辑控制   if  when 循环 数据打印 IDE采用的androidStudio 可自行官网下载 https://developer.android.google.cn/studio/archive?hl=zh-cn 新建项目 添加一个main方法,main()函数的左边出现了一个运行标志的小箭头。现在我们只要点击一下这个