@Nullable和@NotNull注釋的使用

2020-07-20 11:59 更新

本節(jié)介紹在 IntelliJ IDEA 中引入的 @Nullable 和 @NotNull 注釋?zhuān)琁ntelliJ IDEA 引用這兩個(gè)注釋來(lái)通過(guò)恒定條件和異常來(lái)捕獲 NullPointerException(NPE)以及@Nullable 問(wèn)題檢查。

這些注釋旨在幫助您在整個(gè)方法層次結(jié)構(gòu)中查看合同,以避免出現(xiàn) NPE。此外,IntelliJ IDEA 為他們提供了另一個(gè)好處:代碼檢查機(jī)制通知您這些合同在注釋方法的地方的差異,并在某些情況下提供自動(dòng)化解決方案。 

兩個(gè)注釋 - @Nullable 和 @NotNull - 處理方法調(diào)用和字段取消引用外部方法。

IntelliJ IDEA @Nullable 注釋

@Nullable 注釋提醒您必須在以下情況下引入 NPE 檢查:

  • 調(diào)用可以返回 null 的方法。
  • 取消引用可以為 null 的變量 (字段、局部變量和參數(shù))。

IntelliJ IDEA @NotNull 注釋

實(shí)際上,@NotNull 注釋是明確的聲明了以下內(nèi)容的協(xié)定:

  • 一個(gè)方法不應(yīng)該返回 null。
  • 變量(如字段、局部變量和參數(shù))不能保留 null 值。

是否如果違反了這些協(xié)定,IntelliJ IDEA 將警告您。

@Nullable 和 @NotNull 注釋正式的語(yǔ)義

用 @Nullable 聲明注釋的元素 null 值對(duì)于返回 (方法)、傳遞給 (參數(shù)) 和保持 (對(duì)于局部變量和字段) 是完全有效的。

用 @NotNull 聲明注釋的元素不允許返回 null 值 (對(duì)于方法),傳遞給(對(duì)于參數(shù))和保持(對(duì)于局部變量和字段)。

當(dāng)使用帶注釋的聲明或參數(shù)來(lái)重寫(xiě)/實(shí)現(xiàn)方法時(shí),@Nullable 和 @NotNull 之間存在一個(gè)協(xié)方差-逆變關(guān)系。

  • 使用注釋聲明重寫(xiě)/實(shí)現(xiàn)方法:父方法的 @NotNull 注釋需要針對(duì)子類(lèi)方法的 @NotNull 注釋。使用父方法中的 @Nullable 注釋的方法在子類(lèi)方法中可以具有@Nullable 或 @NotNull 注釋。
  • 使用帶注釋參數(shù)的重寫(xiě)/實(shí)現(xiàn)方法:父方法中的參數(shù) @Nullable 注釋需要針對(duì)子類(lèi)方法參數(shù)的 @Nullable 注釋。父方法中參數(shù)的 @NotNull 注釋的方法對(duì)于子類(lèi)方法參數(shù)可以具有 @Nullable 或 @NotNull 注釋?zhuān)ɑ虿话鼈儯?/li>

怎么生成@Nullable和NotNull?

在Android Studio中已經(jīng)幫我們導(dǎo)入了相關(guān)的注釋包,只要點(diǎn)擊Android studio中的Infer Nullity變可以生成相應(yīng)的注釋。





以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)