`foo as?在kotlin中,Foo完全相当于`foo as Foo?`?

gua*_*uai 4 kotlin

foo as? Foo的完全等价的foo as Foo?

如果是,那为什么两者都有?

如果没有那么有什么区别?

zsm*_*b13 9

as?安全的演员.

通常,如果您尝试转换变量,并且失败,则会得到一个变量ClassCastException.使用此运算符,它只是null在这种情况下返回.

这意味着foo as? Foo表达式的返回类型实际上是Foo?因为它可能会返回null.


foo as Foo?是可变类型foo的强制转换Foo?,如果变量不是该类型(即它不是Foo实例或null),它仍然可以产生异常.