Any, Nothing i Unit w Kotlinie

Feb 04 2023
W tym krótkim poście przyjrzymy się niektórym specjalnym typom w Kotlinie. Te typy to Any, Nothing i Unit.
Zdjęcie Mingwei Lim na Unsplash

W tym krótkim poście przyjrzymy się niektórym specjalnym typom w Kotlinie. Te typy to Any, Nothing, i Unit. Być może używałeś niektórych lub wszystkich z nich, ale możesz nie znać dokładnej różnicy między nimi. Jeśli tak jest, czytaj dalej!

Każdy

Oficjalna dokumentacja Anystanów:

Korzeń hierarchii klas Kotlin. Każda klasa Kotlina ma Any jako nadklasę.

Oznacza to, Anyże jest klasą nadrzędną dowolnej klasy zdefiniowanej w Kotlinie. Oznacza to, że jeśli podążysz za łańcuchem rodziców klasy, ostatecznie skończysz na Any. To dokładny odpowiednik Objectw Javie.

Oto definicja Any. Na podstawie powyższego akapitu i następującej definicji każda klasa w Kotlinie ma metody equals, hashCodei toString.

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

    public open fun hashCode(): Int

    public open fun toString(): String
}

Na podstawie oficjalnej dokumentacjiNothing

Możesz użyć Nothing, aby przedstawić „wartość, która nigdy nie istnieje”: na przykład, jeśli funkcja zwraca typ Nothing, oznacza to, że nigdy nie zwraca (zawsze zgłasza wyjątek).

Mówiąc najprościej, zwykle używamy Nothingjako zwracanego typu funkcji, aby wskazać, że funkcja zawsze zgłasza wyjątek.

Oto definicja Nothing.

public class Nothing private constructor()

Przykładowe użycie Nothingznajduje się w errorfunkcji, która jest częścią standardowej biblioteki Kotlina:

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

Jednostka

Definicja Unitjest następująca:

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

W Kotlin domyślny typ zwracany przez funkcję oznacza, Unitże ​​jeśli nie określisz jawnie typu zwracanego przez funkcję, to kompilator Kotlin użyje go Unitjako typu zwracanego.

To wszystko!