📜  如何在 Kotlin 中键入检查对象?

📅  最后修改于: 2022-05-13 01:55:45.811000             🧑  作者: Mango

如何在 Kotlin 中键入检查对象?

Kotlin 是 JetBrains 开发的一种静态类型的通用编程语言,构建了 IntelliJ IDEA、PhpStorm、Appcode 等世界一流的 IDE。它由 JetBrains 于 2011 年首次推出,是一种新的 JVM 语言。 Kotlin 是一种面向对象的语言,是一种比Java“更好的语言”,但仍可与Java代码完全互操作。在本文中,我们将讨论如何在 Kotlin 中对对象进行类型检查,在进一步讨论之前,您应该了解一些 Kotlin 基础知识。人们经常需要在运行时检查对象是否属于特定类型。在Java中,我们使用了关键字的实例;对于 Kotlin,它是 ' is ' 关键字。

例子

让我们看看如何在这些步骤中对对象进行类型检查:

1.让我们尝试一个非常基本的示例,尝试使用字符串和整数

在这个例子中,我们将对一个字符串和一个整数进行类型检查:

Kotlin
fun main (args: Array) {
  var a : Any = 1
  var b : Any = "1"
  if (a is String)
  println ("a = $a is String")
  else 
        println ("a = $a is not String")
   if (b is String)
        println ("b = $b is String")
   else 
     println ("b = $b is not String")
 }


Kotlin
fun main (args: Array) {
  var b : Any = 1
  if (b !is String) 
    println ("$b is not string")
  else 
    println ("$b is String")
}


Kotlin
fun main (args: Array) {
  var a : Any = 1
  var b = a as String
}


Kotlin
fun main (args: Array) {
  var a : Any = "1"
  var b = a as String
  println (b. length)
}


输出:

a = 1 is not String
b = 1 is String

2. 同样,我们可以使用“ !is”来检查对象是否不是String类型,如下所示:

科特林

fun main (args: Array) {
  var b : Any = 1
  if (b !is String) 
    println ("$b is not string")
  else 
    println ("$b is String")
}

输出:

1 is not string

如果你还记得在 Kotlin 中 when 是如何工作的,我们不需要输入 is 关键字,因为 Kotlin 具有智能转换的特性,如果比较的对象类型不同,则会抛出错误。

基本上,is运算符用于检查 Kotlin 中对象的类型,“ !is”是“ is”运算符的否定。 Kotlin 编译器跟踪不可变值并在需要的地方安全地转换它们。这就是智能演员的工作方式; “ is”是一个安全的转换运算符,而一个不安全的转换运算符是 as运算符。

让我们尝试一个带有“ as”运算符的示例,该运算符用于在 Kotlin 中进行强制转换。这是一个不安全的演员表运算符。以下代码示例引发ClassCastException ,因为我们无法将整数转换为字符串:

科特林

fun main (args: Array) {
  var a : Any = 1
  var b = a as String
}

输出:

ERROR

另一方面,由于变量 a 可以成功运行以下代码,该变量是 Any 类型,可以强制转换为 String:

科特林

fun main (args: Array) {
  var a : Any = "1"
  var b = a as String
  println (b. length)
}

输出:

1