@Nullable和@NotNull注释的使用

2020-07-20 11:59 更新

本节介绍在 IntelliJ IDEA 中引入的 @Nullable 和 @NotNull 注释,IntelliJ IDEA 引用这两个注释来通过恒定条件和异常来捕获 NullPointerException(NPE)以及@Nullable 问题检查。

这些注释旨在帮助您在整个方法层次结构中查看合同,以避免出现 NPE。此外,IntelliJ IDEA 为他们提供了另一个好处:代码检查机制通知您这些合同在注释方法的地方的差异,并在某些情况下提供自动化解决方案。 

两个注释 - @Nullable 和 @NotNull - 处理方法调用和字段取消引用外部方法。

IntelliJ IDEA @Nullable 注释

@Nullable 注释提醒您必须在以下情况下引入 NPE 检查:

  • 调用可以返回 null 的方法。
  • 取消引用可以为 null 的变量 (字段、局部变量和参数)。

IntelliJ IDEA @NotNull 注释

实际上,@NotNull 注释是明确的声明了以下内容的协定:

  • 一个方法不应该返回 null。
  • 变量(如字段、局部变量和参数)不能保留 null 值。

是否如果违反了这些协定,IntelliJ IDEA 将警告您。

@Nullable 和 @NotNull 注释正式的语义

用 @Nullable 声明注释的元素 null 值对于返回 (方法)、传递给 (参数) 和保持 (对于局部变量和字段) 是完全有效的。

用 @NotNull 声明注释的元素不允许返回 null 值 (对于方法),传递给(对于参数)和保持(对于局部变量和字段)。

当使用带注释的声明或参数来重写/实现方法时,@Nullable 和 @NotNull 之间存在一个协方差-逆变关系。

  • 使用注释声明重写/实现方法:父方法的 @NotNull 注释需要针对子类方法的 @NotNull 注释。使用父方法中的 @Nullable 注释的方法在子类方法中可以具有@Nullable 或 @NotNull 注释。
  • 使用带注释参数的重写/实现方法:父方法中的参数 @Nullable 注释需要针对子类方法参数的 @Nullable 注释。父方法中参数的 @NotNull 注释的方法对于子类方法参数可以具有 @Nullable 或 @NotNull 注释(或不包含它们)。

怎么生成@Nullable和NotNull?

在Android Studio中已经帮我们导入了相关的注释包,只要点击Android studio中的Infer Nullity变可以生成相应的注释。





以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号