繁体   English   中英

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

[英]Preconditions checknotnull annotations produce null warnings

以下行

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

在 android 工作室发出警告

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

在查看 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;

}

看起来第一个参数不允许获取 null。

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

所以我想知道:

  • Android 工作室中是否有我没有配置好的东西
  • 这是番石榴中的错误吗?

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

Preconditions.checkNotNull的意图是它应该只用于您认为永远不可能是 null 的变量——并且您想确保您的信念是正确的,并且如果您错了则抛出异常。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM