本文主要是介绍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类型层次的最顶端。
总结:
unit | nothing | nothing? | any | any? | |
---|---|---|---|---|---|
返回 | 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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!