Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';Kotlin和#x27;那是什么?输入'vs'作为类型`_Kotlin - Fatal编程技术网

什么';Kotlin和#x27;那是什么?输入'vs'作为类型`

什么';Kotlin和#x27;那是什么?输入'vs'作为类型`,kotlin,Kotlin,下面是一个代码 val firstAny: Any? = someVariable as? Any val secondAny: Any? = someVariable as Any? 对我来说,看起来两者都会产生相同的结果。它们之间有什么区别吗,即as?类型vsas类型??显而易见的是安全铸造。下面的代码不会崩溃,但在类型不匹配时返回null val someVariable: Any? = 1 val someStr: String? = someVaria

下面是一个代码

        val firstAny: Any? = someVariable as? Any
        val secondAny: Any? = someVariable as Any?

对我来说,看起来两者都会产生相同的结果。它们之间有什么区别吗,即
as?类型
vs
as类型?

显而易见的是安全铸造。下面的代码不会崩溃,但在类型不匹配时返回null

val someVariable: Any? = 1
val someStr: String? = someVariable as? String // won't crash
另一种是不安全铸造。当类型不匹配时,它将崩溃

val someVariable: Any? = 1
val someStr: String? = someVariable as String? // will crash

对于
Any?
它们是等效的

如果要转换为其他类型,则无法转换该类型时:

  • someVariable作为?Type
    将返回
    null
    ,但
  • someVariable as Type?
    将因
    ClassCastException
    而失败