Any, Nothing und Unit in Kotlin

Feb 04 2023
In diesem kurzen Beitrag werfen wir einen Blick auf einige der besonderen Typen in Kotlin. Diese Typen sind Any, Nothing und Unit.
Foto von Mingwei Lim auf Unsplash

In diesem kurzen Beitrag werfen wir einen Blick auf einige der besonderen Typen in Kotlin. Diese Typen sind Any, Nothingund Unit. Möglicherweise haben Sie einige oder alle davon verwendet, kennen aber möglicherweise nicht den genauen Unterschied zwischen ihnen. Wenn das der Fall ist, dann lesen Sie weiter!

Beliebig

Die offizielle Dokumentation der AnyStaaten:

Die Wurzel der Kotlin-Klassenhierarchie. Jede Kotlin-Klasse hat Any als Superklasse.

Dies bedeutet Any, dass es sich um die übergeordnete Klasse jeder Klasse handelt, die Sie in Kotlin definieren. Das heißt, wenn man der Elternkette einer Klasse folgt, landet man letztendlich bei Any. Es ist das genaue Äquivalent zu ObjectJava.

Hier ist die Definition von Any. Basierend auf dem obigen Absatz und der folgenden Definition verfügt jede Klasse in Kotlin über die Methoden equals, hashCodeund toString.

public open class Any {
    public open operator fun equals(other: Any?): Boolean

    public open fun hashCode(): Int

    public open fun toString(): String
}

Basierend auf der offiziellen Dokumentation vonNothing

Sie können Nothing verwenden, um „einen Wert darzustellen, der niemals existiert“: Wenn eine Funktion beispielsweise den Rückgabetyp Nothing hat, bedeutet dies, dass sie nie zurückkehrt (immer eine Ausnahme auslöst).

Einfach ausgedrückt verwenden wir normalerweise Nothingden Rückgabetyp einer Funktion, um anzugeben, dass die Funktion immer eine Ausnahme auslöst.

Hier ist die Definition von Nothing.

public class Nothing private constructor()

Ein Beispiel für die Verwendung Nothingist die errorFunktion, die Teil der Kotlin-Standardbibliothek ist:

public inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())

Einheit

Die Definition von Unitlautet wie folgt:

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

In Kotlin bedeutet der Standardrückgabetyp einer Funktion , dass der Kotlin-Compiler ihn als Rückgabetyp verwendet, wenn Sie den Rückgabetyp Uniteiner Funktion nicht explizit angeben .Unit

Das ist alles!