HOWTO · Kotlin

Der Unterschied zwischen Operatoren ist und wie in Kotlin

Dieser Artikel behandelt den Unterschied zwischen is- und as-Operatoren in Kotlin. Wir werden auch durchgehen, wie und wann jeder verwendet wird.

Auf dieser Seite

Dieser Artikel stellt den Unterschied zwischen den Operatoren is und as in Kotlin vor. Obwohl die Verwendung dieser Operatoren ähnlich erscheinen mag, sind sie doch unterschiedlich.

Kotlin ist Operator

Der Kotlin-Operator is wird zur Typprüfung verwendet. Angenommen, wir haben mehrere Klassen mit unterschiedlichen Variablen in einer Schnittstelle und möchten die öffentlichen Variablen austauschbar mit unterschiedlichen Methoden verwenden.

In diesem Fall müssen wir prüfen, ob der Datentyp der erforderlichen Parameter in beiden Methoden ähnlich ist. Der Code gibt einen Fehler aus, wenn der Datentyp nicht ähnlich ist.

Wenn beispielsweise eine Methode einen Parameter vom Datentyp String benötigt, müssen wir den Datentyp der übergebenen Variablen überprüfen. Der Kotlin-Operator is ermöglicht uns dies.

Es gibt einen booleschen Wert zurück, und wenn beide Operanden des Operators is denselben Datentyp haben, gibt es true zurück. Andernfalls wird false zurückgegeben.

Der Kotlin-Operator is ist ein Typprüfungsoperator. Daher können wir es verwenden, um zu überprüfen, ob der Datentyp einer Variablen dem entspricht, was wir denken.

Codebeispiel:

fun main(args: Array<String>) {
    var s: Any = "Hey, this is Kotlin programming!"
    val r = s is String
    println("The variable s is a String: " + r)
}

Code ausführen

Ausgang:

The variable s is a String: true

Der Kotlin-Operator is entspricht dem Operator instanceof von Java. Daher können wir es verwenden, um das Objekt einer Klasse zu überprüfen.

Codebeispiel:

class exampleClass {

    var v: String = "Kotlin Programming!"

    fun exampleFunc() {
        println("Official Android language is - " + v)
    }

}
fun main(args: Array<String>) {

    val obj = exampleClass() // Creating an object
    obj.exampleFunc()
    val result = obj is exampleClass // Using the Kotlin is operator
    println("The object obj is an instance of the class exampleClass: " + result)

}

Code ausführen

Ausgang:

Official Android language is - Kotlin Programming!
The object obj is an instance of the class exampleClass: true

Kotlin als Operator

Der Kotlin-Operator as wird für die explizite Typumwandlung verwendet. Der Kotlin as ist kein laufzeitsicherer Operator.

Wenn wir versehentlich ein falsches Objekt übergeben, führt der Operator as zu einem Fehler. Daher wird immer empfohlen, Kotlins sicheren Cast-Operator as? zu verwenden.

Das wie? Der Operator gibt nach Möglichkeit den umgewandelten Wert zurück. Andernfalls wird eine null zurückgegeben.

Unsicheren Cast-Operator as verwenden

Der unsichere Cast-Operator as funktioniert gut, bis wir einen Operanden übergeben, der in den Zieltyp konvertiert werden kann.

Codebeispiel:

fun main(args: Array<String>){
    val s: String = "Convertible"
    val s1: String = s as String
    println(s1)
}

Code ausführen

Convertible

Aber wenn wir versuchen, etwas zu konvertieren, das mit dem Zieltyp nicht kompatibel ist, wird ein Fehler ausgegeben.

Codebeispiel:

fun main(args: Array<String>){
    val s: String = 18
    val s1: String = s as String
    println(s1)
}

Fehlerausgabe:

Die Verwendung eines unsicheren Cast-Operators löst einen Fehler aus

Der sichere Cast-Operator as? ist am besten, den Fehler zu vermeiden.

Verwenden Sie den Safe Cast-Operator As?

Wie bereits erwähnt, gibt der Safe-Cast-Operator null zurück, wenn die Typumwandlung nicht möglich ist.

fun main(args: Array<String>){

    var s: Any = "Kotlin"
    var s1 = 18
    // Returns null when casting is not possible
    val s2: String? = s1 as? String
    println(s2)

}

Code ausführen

Ausgang:

null