as有什么区别?实施者还是实施者?

时间:2018-11-26 06:25:44

标签: kotlin

在科特林,我们有asas?

以下内容有什么区别

(origin as? Implementor)?.someFunction()

vs

(origin as Implementor?)?.someFunction()

还是它们本质上相同?

1 个答案:

答案 0 :(得分:2)

as?将左侧的类强制转换为右侧的类,如果不可能,则返回nullas的作用相同,但如果无法进行强制转换,则会引发异常。

在第一个示例中,您检查origin是否为Implementor类型,如果是,则调用someFunction()。该行将永远不会引发异常,这意味着如果objectnull或来自其他类型,它将什么都不做。

在第二个示例中,您强制转换origin以键入Implementornull,如果它不为null,则调用someFunction()。如果对象来自其他类型,则该行将引发异常。