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

时间:2017-07-27 08:40:22

标签: kotlin

foo as? Foo完全相当于foo as Foo?

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

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

1 个答案:

答案 0 :(得分:9)

as?safe cast operator

通常,如果您尝试投射变量,但失败,则会得到ClassCastException。在这种情况下,使用此运算符只会返回null

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

foo as Foo?是可归foo类型的Foo?的强制转换,如果变量不属于该类型,它仍然会产生异常(即它不是{{1}实例或Foo)。