Kotlin编程实战:创建优雅、富于表现力和高性能的JVM与Android应用程序
上QQ阅读APP看书,第一时间看更新

6.3.1 类型检查

“这是一种特性还是缺陷?”是关于运行时类型检查的悬而未决的争论。偶尔检查对象的类型是必要的,但从可扩展性的角度来看,我们应该谨慎地使用它。当添加新类型时,检查任意类型会使代码变得脆弱,并导致开闭原则的失败——请参阅Agile Software Development, Principles, Patterns, and Practices [Mar02]。在编写检查运行时类型的代码之前,请多加考虑。

尽管如此,检查运行时类型在两种情况下是有用且不可避免的。一个是equals()方法的实现——我们需要知道手头的实例是否属于当前类。另一个是在when内,如果要采用的路径取决于实例的类型。

让我们首先看一下如何检查运行时类型,然后看一个很好的小特性,它可以在类型确认后消除强制转换带来的负担。