新版AndroidSDK宽容处理Kotlin程式码可空合约违规,给开发者更新的缓冲时间

Google在发布最新Android Pie的同时,也发布了新的Android SDK,为其中一些常用的API加入可空注释(Nullability Annotation),确保开发者在使用Kotlin开发时的Null安全性,而即便是Java的开发者也能获得这项更新带来的好处。
Google提到,使用Java的时候,最常遭遇到的陷阱就是尝试存取NULL参照的成员,导致获得NullPointerException错误。Kotlin透过将“可空”和“不可空”类别加入类别系统,以保护程式码不会出现这样的错误,这能帮助消除NullPointerExceptions错误,以提高整体应用程序品质。也就是说,当Kotlin程式码呼叫用Java撰写的API时,会仰赖这些可空注释来决定每个参数以及回传类别的可空性,而没有注释的参数和回传类别将被视为平台类别,而这样会削弱Kotlin的NULL安全性保证。
现在新的Android SDK作为Android 9连带发布的一部分,包含了一些常用API的可空注释,当Kotlin呼叫了任何带有注释的API,将预留NULL安全性保证。而使用Java的开发者,也可以透过Android Studio所捕捉到的可空合约违规行为,从这些注释获得除错上的好处。
正常来说,Kotlin中的可空合约违规会导致编译错误,但是Google表示,为了要确保新的注释API与现有程式码相容,Kotlin编译器团队透过内部机制会将API标记为近期加入注释,这些近期加入注释的API只会产生警告而非错误,让开发者有足够的时间调整,但在下一年度的Android SDK,Google就会提升严重等级,对该行为发出编译器错误。
由于Android SDK API界面很大,目前Google只注释了一小部分的API,接下来在几个Android SDK版本中,会继续为既存和新的Android API添加可空注释。
