0

以下行

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

在 android studio 中发出警告

警告:(291, 44) 参数 'data.get(name)' 可能为空

在查看 Preconditions 的源代码时:

@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;

}

看起来第一个参数不允许为空。

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

所以我想知道:

  • Android Studio 中是否有一些我没有配置好的东西
  • 这是番石榴中的错误吗?

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

4

1 回答 1

1

的目的Preconditions.checkNotNull是它应该只用于你认为永远不会为空的变量——并且你想确保你的信念是正确的,如果你错了就会抛出异常。

Guava 的设置按预期工作。您可能适合取消警告。

于 2019-09-19T18:46:58.197 回答