![](/img/trans.png)
[英]How do I avoid “potential null pointer access” when using Preconditions.checkNotNull()?
[英]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
所以我想知道:
显然,如果我进行 null 检查,我怀疑参数可能是 null
Preconditions.checkNotNull
的意图是它应该只用于您认为永远不可能是 null 的变量——并且您想确保您的信念是正确的,并且如果您错了则抛出异常。
Guava 的设置按预期工作。 您可能适合取消警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.