@Nullable和@NotNull注釋的使用

2020-07-20 11:59 更新

本節(jié)介紹在 IntelliJ IDEA 中引入的 @Nullable 和 @NotNull 注釋,IntelliJ IDEA 引用這兩個注釋來通過恒定條件和異常來捕獲 NullPointerException(NPE)以及@Nullable 問題檢查。

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

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

IntelliJ IDEA @Nullable 注釋

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

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

IntelliJ IDEA @NotNull 注釋

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

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

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

@Nullable 和 @NotNull 注釋正式的語義

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

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

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

  • 使用注釋聲明重寫/實現(xiàn)方法:父方法的 @NotNull 注釋需要針對子類方法的 @NotNull 注釋。使用父方法中的 @Nullable 注釋的方法在子類方法中可以具有@Nullable 或 @NotNull 注釋。
  • 使用帶注釋參數(shù)的重寫/實現(xiàn)方法:父方法中的參數(shù) @Nullable 注釋需要針對子類方法參數(shù)的 @Nullable 注釋。父方法中參數(shù)的 @NotNull 注釋的方法對于子類方法參數(shù)可以具有 @Nullable 或 @NotNull 注釋(或不包含它們)。

怎么生成@Nullable和NotNull?

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





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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號