美文网首页
kotlin中的Any,Unit,Nothing,Void的区别

kotlin中的Any,Unit,Nothing,Void的区别

作者: ModestStorm | 来源:发表于2022-09-25 19:33 被阅读0次

Any

/**
 * The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass:Any类是kotlin中的所有父类,相当于java中的Object
 */
public open class Any {
 
    public open operator fun equals(other: Any?): Boolean

    public open fun hashCode(): Int

    public open fun toString(): String
}

Any类声明了equals/hashcode/toString方法,Any类相当于java中的Object,是所有类的父类。

Unit

Unit类是一个object类,意味着它在进程中只有一个实例对象

public object Unit {
    override fun toString() = "kotlin.Unit"
}

Unit类也是Any类的子类,常作为函数的默认返回值,相当于java中的void。

fun doSomething() {
    //do something here
}

// Unit返回值也可以去掉
fun doSomething() : Unit {
    //do something here
}

Nothing

Nothing是一个具有私有的构造函数类,外部不可以创建

public class Nothing private constructor()

Nothing 常被作为抛出异常函数的返回值,而且Nothing关键字不可以省略

fun willAlwaysThrowException() : Nothing =  throw Exception("Unnecessary Exception")

另外Nothing也常用在todo的方法声明中

public inline fun TODO(): Nothing = throw NotImplementedError()

Void

Void类是私有构造函数的类

public final class Void {
    @SuppressWarnings("unchecked")
    public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");
    /*
     * The Void class cannot be instantiated.
     */
    private Void() {}
}

Void常被作为强制返回null的返回值,正常情况下使用Unit即可

 public open fun play(path:String): Void? {
        return null
    }
// 二者是等价的,Unit关键字相当于java中的void
public open fun play(path:String): Unit? {
        return null
    }

//有明确返回值return时,需要指定方法返回值类型
 public open fun play(path:String): Int {
        return 2
    }

相关文章

  • kotlin中的Any,Unit,Nothing,Void的区别

    Any Any类声明了equals/hashcode/toString方法,Any类相当于java中的Object...

  • Kotlin中的Unit,Any和Nothing

    Kotlin有一些新东西: Unit Any 和 Nothing,这里整理一下对这三兄弟的理解。 Unit 首先,...

  • Kotlin中的Unit,Any和Nothing

    Kotlin有一些新东西: Unit Any 和 Nothing,这里整理一下对这三兄弟的理解。 Unit 首先,...

  • Kotlin入门(三):函数(笔记)

    Unit类型和Nothing类型区别 Unit类型 :在kotlin方法创建中,表示方法没有返回值,相当于java...

  • Unit和()

    Unit类似于Java中的void。Unit是类型,而它的实例是() 想测试nothing返回值是不是Unit,不...

  • 基础

    数据类型: 只列出多出Java的。 Unit:表示无值,类似于void。 Nothing:Nothing类型在Sc...

  • Kotlin基础语法

    表达式函数可省略返回类型 返回类型自动推导 unit相当于java中的void 可省略 kotlin中默认可见性为...

  • 从零开始学Kotlin-类的继承(6)

    从零开始学Kotlin基础篇系列文章 Kotlin中的超类Any Kotlin 中所有类都继承超类 Any 类 A...

  • Koltin Any 类型

    Koltin Any 类型 kotlin.Any The root of the Kotlin class hie...

  • Kotlin学习笔记(四)继承

    1.覆盖方法 在kotlin类中所有的类都实现了超类 Any,Any不是 Java中的Object,在Any中包含...

网友评论

      本文标题:kotlin中的Any,Unit,Nothing,Void的区别

      本文链接:https://www.haomeiwen.com/subject/zbtvortx.html