先决条件 checknotnull 注释产生空警告

Preconditions checknotnull annotations produce null warnings

下面一行

final ProgramObject data =
            Preconditions.checkNotNull(datas.get(name), TEMPLATE, name);

在 android 工作室发出警告

Warning:(291, 44) Argument 'data.get(name)' might be null

在查看前提条件的源代码时:

@CanIgnoreReturnValue
@NonNullDecl
public static <T extends Object> T checkNotNull(
  @NonNullDecl T obj, @NullableDecl String errorMessageTemplate, @NullableDecl Object p1) {
if (obj == null) {
  throw new NullPointerException(lenientFormat(errorMessageTemplate, p1));
}
return obj;

}

第一个参数好像不能为null

这是与之关联的 PR: https://github.com/google/guava/commit/a890c444e55973384d1370b56afe1a02e7db9c3c

所以我想知道:

显然,如果我进行空检查,我怀疑参数可能为空

Preconditions.checkNotNull 的目的是它应该只用于您认为永远不会为 null 的变量——并且您想确保您的信念是正确的,并且如果您是错了。

Guava 的设置工作正常。您可能适合取消警告。