- Kotlin编程实战:创建优雅、富于表现力和高性能的JVM与Android应用程序
- (美)文卡特·苏布拉马尼亚姆
- 412字
- 2025-02-27 12:54:46
6.2 可空的引用
在Java中,null是一种我们一直无法避免的东西。如果返回对象的函数没有任何东西可以返回,那么Java中的解决方案就是返回null。不幸的是,如果函数的调用方没有——也就是忘记执行显式的null检查,这将导致意外的NullPointerException。在Java的最新版本中,Optional被用作这个问题的解决方案,但是这种方法有三个缺点。首先,程序员必须使用Optional,编译器不会强制这样做。第二,Optional涉及一个小开销来包装对象的引用,或者当没有对象时一个空的null引用。第三,程序员仍然可以返回null而不是Optional的实例,Java编译器也不会抱怨。Kotlin避免了这些问题,同时提供了良好的编译时支持,以确保程序员完成必要的null检查。
我们将首先讨论为什么null引用通常不适合使用。然后,我们将看到Kotlin编译器是如何不允许将null赋值给任意引用的,并要求可以接受null的引用是一种特殊的可空类型。然后,我们将查看Kotlin提供的用于安全、方便地取消可空引用的良好运算符,以及完成了必要的null检查的完整编译时验证。最后,我们将了解when表达式如何与null检查相互作用。