kotlin检查类型不兼容的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin检查类型不兼容的类型相关的知识,希望对你有一定的参考价值。

我尝试过如下代码

 val a: Int? = 1024
 println(a is Int) // true
 println(a is Int?) // true
 println(a is String) // **error: incompatible types: Long and Int? why the value cannot be checked with any type?**

但这效果很好:

fun checkType(x: Any?) 
    when(x) 
        is Int -> ...
        is String -> ... // **It works well here**
        else -> ...
    

答案

它以这种方式工作:

  fun main(args: Array<String>) 
          val a = 123 as Any?  //or val a: Any = 123
            println(a is Int) // true
            println(a is Int?) // true
            println(a is String) //false
      checkType(a) //Int

    

    fun checkType(x: Any?) 
        when(x) 
            is Int ->  println("Int")
            is String -> println("String")
            else ->  println("other")
        
     

这是因为qazxsw poi绝对不是qazxsw poi类型之一,编译器知道它并且不允许你运行val a: Int?

您应该使用更抽象的类型来定义变量。

另一答案

您无需创建单独的函数来检查其类型。你可以简单地转换为String类型:

a is String

以上是关于kotlin检查类型不兼容的类型的主要内容,如果未能解决你的问题,请参考以下文章

使用从 Kotlin 数据类生成的代码时出现“不兼容的类型”错误

AIDL 中的 Parcelize 注释:不兼容的类型:Object 无法转换为 MyCustomObject

SerializationComponentRegistrar 与此版本的编译器不兼容

android studio报错不兼容的类型。

jdbc 检查类型兼容性

与 void* 类型不兼容的类型