在使用 Java 編程語言時,最多見的痛處之一是在存取空引用 (null reference) 成員時,系統會報出 NullPointerException。Kotlin 可有效地避免這問題的發生,它經過將可空類型 (nullable type) 與非空類型 (non-nullable type) 匯入類型系統,幫助您消除代碼中的 NullPointerException 錯誤,從而提高 app 的總體質量。Kotlin 代碼調用寫入 Java 語言中的 API 時,會依靠上述 API 中的可空性註解來決定每一個參數的可空性,以及返回值類型。未註解的參數和返回值類型將被視爲平臺類型,從而弱化 Kotlin 的空值安全保證。做者:James Lau, 產品經理android
最新的 Android 9 包含了 Android SDK 的更新,爲一系列最經常使用的 API 加上了可空性註解。您的 Kotlin 代碼在調用 SDK 中任一已註解的 API 時,可無缺保留空值安全保證。即便在使用 Java 編程語言時,您依舊能夠經過使用 Android Studio 檢測可空性協議違規,並從這些註解中獲益。編程
新的 Android SDK 做爲 Android 9 連帶發佈的一部分,包含了一些經常使用 API 的可空性註解,當 Kotlin 調用了 SDK 中任何帶有註解的 API 時,它能預留出空安全性 (null-safety) 保障。而使用 Java 的開發者也能夠利用 Android Studio 捕捉可空合約違規行爲,從而有效利用這些可空性註解。安全
一般狀況下,Kotlin 中違反可空性協議時會致使編譯錯誤。爲保證已包含註解的 API 可與您的現有代碼兼容,咱們採用了一個由 Kotlin 編譯器團隊提供的內部機制來對最新註釋的 API 進行註解。新註釋的 API 僅觸發警告,而不會致使 Kotlin 編譯器報錯。這必須使用 Kotlin 插件 1.2.60 或更新版本。app
近期加入的可空性註解只會產生警告而非錯誤,但在下一年度的 Android SDK 中 ,咱們將提升錯誤嚴重等級。此舉的目的是爲了給開發者預留出足夠時間調整代碼。編程語言
首先,在 Android Studio 內選擇 Tools > SDK Manager。選擇左欄中的 「Android SDK」,確保 「SDK Platforms」 的標籤已打開。編輯器
檢查 Android 8.+ (P) 並點擊 OK。經過該步驟,可實現 Android SDK 平臺 28 級第 6 版的安裝 (若以前還沒有安裝)。此後,將項目的編譯 SDK 版本設置爲 API 28 級,來激活新款 Android Pie SDK 的可空性註釋。 若是您當前的 Kotlin 插件還沒有更新到最新版本,您須要經過 Android Studio 對其進行更新。請選擇 「Tools Kotlin > Configure Kotlin Plugin Updates」 檢查並確保 Kotlin 插件版本是 1.2.60 或更新版本。配置設置完成後,若是您的代碼違反 Android SDK 中的可空性協議,您的項目將顯示警告,具體示例以下:google
此外,若是您調用的 Android API 不符合可空性要求,Android Studio 的代碼編輯器上一樣會顯示相關警告。具體示例以下:即便您的代碼採用的是 Java 編程語言,您依舊能夠重新的可空性註解中獲益。在默認狀態下,Android Studio 會顯示違反可空性協議的警告,具體示例以下:編碼
爲保證您已激活該檢查功能,您可訪問 IDE 的設置頁面並搜索 「Constant conditions& exceptions」 檢查,並確保相關項已通過檢查。 若是您使用的是 Java 編程語言,違反可空性協議的將不會產生任何編譯器警告或報錯。僅 IDE 的代碼檢查功能可檢示這些問題。此外,您可在整個項目中檢查代碼,並審閱整體結果。點擊 「Analyze>Inspect Code...」 來開始該過程。插件
Android SDK API 的接口衆多,目前爲止,咱們僅標註了小部分的 API,尚有諸多工做在等著我們。在將來即將發佈的幾個 Android SDK 版本中,咱們將繼續爲現有 Android API 增長可空性註解,並確保全部的新增 API 也通過註釋這一環節。3d
具有與 Kotlin 更合拍的 Android SDK、AndroidX 中的可空性註解 (Jetpack 系列的一部分) 以及 Android KTX 以後,咱們將繼續爲使用 Kotlin 的開發者改進 Android API 。若是您還沒有嘗試 Kotlin,咱們但願您試用一下。Kotlin 不只能讓您的代碼更加簡潔,還能提高您 app 的穩定性。
祝您使用 Kotlin 愉快!
點擊這裏 "咱們願意更好地傾聽您的聲音 "