- Kotlin编程实战:创建优雅、富于表现力和高性能的JVM与Android应用程序
- (美)文卡特·苏布拉马尼亚姆
- 893字
- 2025-02-27 12:54:45
第6章 使用类型安全性解决问题
语言的静态类型越多,它就越容易确保类型安全,但不需要过多地指定类型。通过增强的null检查、智能类型转换和流畅类型检查,Kotlin努力使你的代码更加类型安全,更不容易出错。在本章中,你将了解Kotlin中的一些基本类型和编译器中内置的有效类型检查功能。我们还将了解Kotlin如何在编译时快速失败,以防止许多错误进入运行时——这将使你的编程工作更加高效。
你能想象打开电视,却得到一个NullPointerException吗?我的朋友Brian Sletten[1]就发生过这样的事,他打开电视想看他最喜欢的节目时,却看到了这个错误——在那样的节目里,谁需要恐怖电影?Kotlin将帮助你在编译时防止NullPointerException。
使用Kotlin的契约式设计方法,可以清楚地表示函数或方法是否以及何时可以接收或返回null引用。如果引用可能为null,那么在访问所引用对象的任何有用方法或属性之前,必须执行一个null检查。有了这个工具,Kotlin使代码变得安全,从而可以避免调试和生产过程中令人尴尬的争吵。此外,Kotlin还提供了许多处理null类型的运算符,这减少了处理可能为null的引用时代码中的混乱。更令人兴奋的是,这些检查纯粹是在编译时进行的,不会向字节码添加任何内容。
与Java的对象非常相似,Kotlin中的所有类都继承自Any类。这个类包含了一些常用方法,这些方法对Kotlin中几乎任何类的实例都是有用的。在处理多个类型时,如果需要在不同类型之间进行类型转换,那么Kotlin的智能类型转换特性将负责自动转换,这样你就不必编写对你和编译器都显而易见的乏味代码。这不仅减少了键盘输入,而且极大地减少了代码的冗长,从而使代码更加容易维护。而且,如果你需要执行显式类型转换,Kotlin对此也有优雅的语法,你很快就会看到。
Kotlin中更高级的概念之一是对泛型参数类型的协变和逆变的良好支持。这听起来很复杂——的确如此——但本章将揭开这些概念的神秘面纱,这样你就可以在Kotlin中比在Java中更有效地使用泛型。我们还将探讨具体化的类型参数,这些参数可以在创建和调用运行时需要类型信息的泛型函数时减少混乱和错误。
在本章中,你将了解Any和Nothing类、可空引用和相关运算符,以及智能类型转换的好处。你还将学习如何安全地执行类型强制转换,以及如何创建类型安全的可扩展泛型函数。这将有助于你设计不易出错和更易于维护的代码。
[1] https://twitter.com/bsletten/status/587441266863943680