2020-04-16

0
回復
125
查看
打印 上一主題 下一主題
[復制鏈接]

37

主題

57

帖子

3077

安幣

管理員

Rank: 9Rank: 9Rank: 9

樓主
發表于 2020-4-16 16:15:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如果對本篇文章感興趣,請前往,原文地址:http://www.clfrpjw.com.cn/blog-720372-83928.html

在去年 5 月的 I/O 開發者大會上,我們正式宣布 Kotlin 優先 (Kotlin First) 的這一重要理念,Kotlin 將成為 Android 開發者的首選語言。目前,在排名前 1,000 位的 Android 應用中,已有超過 60% 正在使用 Kotlin 進行開發。為什么 Kotlin 受到這么多開發者的喜愛呢?這里就不得不提 Kotlin 在可空性方面的優勢了。Kotlin 將可空性直接融合到了類型系統中,這意味著開發者在聲明一個參數時,需要提前說明該參數能否接納 null 值。本文將帶您了解 Android 11 SDK 引入了哪些變更,以便在 API 中顯示更多的可空性信息。此外,我們還將介紹一些實用方法與技巧,幫助您做好準備,順利應對 Kotlin 中的可空性問題。
淺談 Kotlin 中的可空性

使用 Kotlin 編寫代碼時,您可以使用問號操作符來指明可空性:
KOTLINvar x: Int = 1x = null // compilation errorvar y: Int? = 1y = null // okay
Kotlin 的這個特性能夠讓您的代碼更安全。即使您隨后調用一個方法或試圖訪問 x 等非空變量屬性,也不會面臨空指針異常的風險。許多開發者向我們反饋表示,自從有了該特性后,他們便可以把更多精力放在代碼設計上并為用戶打造質量更高的應用。
可空性對 Java 編程語言有什么作用?

如果我使用的 (Android) API 不是用 Kotlin 編寫的,該怎么辦?不用擔心,Kotlin 編譯器能夠識別 Java 代碼的注釋,從而判定方法返回的結果是否為可空值,例如:
JAVApublic @Nullable String getCurrentName() {   return currentName;}
添加 @Nullable 注釋后,當您在 Kotlin 文件中使用 getCurrentName 的結果時,您必須先進行 null 值檢查,才能對其解析引用,否則會觸發 Android Studio 報錯,而且 Kotlin 編譯器也會在構建時拋出錯誤。@NonNull 注釋則恰好與之相反,如果一個方法標有 @NonNull 注釋,Kotlin 編譯器會將該方法返回的結果視為非空類型,并禁止您在之后的代碼中把該結果設置為 null。
此外,Kotlin 編譯器還可以識別另外兩個類似的注釋: @RecentlyNullable 和 @RecentlyNonNull。這兩個注釋與 @Nullable 和 @NonNull 完全相同,唯一的區別在于它們會生成警告而非錯誤*。
Android 11 中的可空性

我們在近期發布了 Android 11 開發者預覽版,邀請開發者們試用最新的 Android 11 SDK。我們升級了 SDK 中的部分注釋,將 @RecentlyNullable 和 @RecentlyNonNull 分別更改為 @Nullable 和 @NonNull (可空性違規行為從觸發警告變為導致錯誤)。此外,我們也繼續為 SDK 中不包含可空性信息的方法增加 @RecentlyNullable 和 @RecentlyNonNull 注釋。
下一步

如果您正在使用 Kotlin 編寫代碼,當您從 Android 10 升級至 Android 11 SDK 后,您可能會遇到一些新的編譯器警告,另外,之前的警告也可能會以錯誤形式出現。這是我們特意引入的變更,也是 Kotlin 編譯器的特性之一。這些警告會提醒您當前代碼可能會導致應用崩潰 (如果您編寫的不是 Kotlin 代碼,您可能會完全忽略這個風險)。您可以通過在代碼中添加空值檢查來解決這些警告或報錯。
我們將繼續遵循以下原則為 Android SDK 添加注釋: 先在較低版本 (例如 Android 10) 中采用 @RecentlyNullable 和 @RecentlyNonNull,然后再在新版本 (例如 Android 11) 中將其升級為 @Nullable 和 @NonNull。此舉的目的是為了給您預留至少一個版本發布周期的時間更新 Kotlin 代碼,確保其質量更高、更加健壯。

  • Java 是 Oracle 和/或其附屬公司的注冊商標。
    作者:谷歌開發者


  • 鏈接:https://www.jianshu.com/p/cebf56020f26

來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
  繼續閱讀全文



想在安卓巴士找到更多優質博文,可移步博客區

如果對本篇文章感興趣,請前往,
原文地址:
http://www.clfrpjw.com.cn/blog-720372-83928.html
分享到:  QQ好友和群 QQ空間 微信
收藏
收藏0
支持
支持0
反對
反對0
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

領先的中文移動開發者社區
18620764416
7*24全天服務
意見反饋:[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粵ICP備15117877號 )

时时彩改欢乐生肖 澳洲幸运8机器人澳洲幸运8计算公式 天天红包赛余额不见 股票融资融券的门槛 江苏7位数开奖20015期 欢乐捕鱼大战破解版 四川血战到底麻将下 江苏快3销售平台 宁夏11选5直播宁夏11选5手机助手 辽宁十一选五 qq分分彩官网 遇乐棋牌会员登录 江西快3 山东麻将258将 写稿子赚钱的网站 辉煌棋牌哪里下载 极速快三走势分析