java - 需要一些关于 requireNonNull 的说明
问题描述
getActivity().finish();
现在编辑器会在方法被注释的地方显示警告。然后它显示使用建议。当我接受它的更改时,它将代码转换为此,并且警告消失了。@Nullable
requireNonNull
Objects.requireNonNull(getActivity()).finish();
使用有意义requireNonNull
吗?
的实现requireNonNull
是
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
getActivity()
所以如果为空,我的代码仍然会崩溃。
我们应该对此进行空检查。
if (getActivity() != null)
getActivity().finish();
我认为null check
比requireNonNull
,你说什么?如果是,那么编辑不应该建议在requireNonNull
那里使用。
因为在状态类似的字段中使用 requireNonNull 是不安全的Activity
。我错过了一些好处requireNonNull
吗?
解决方案
此处的显式null
检查是正确的,因为您希望防止在getActivity
返回时抛出 NullPointerException null
。
Objects.requireNonNull()
通常用于参数验证(快速失败),例如可以在构造函数中使用:
/**
* Constructs a new Foo instance.
*
* @param bar a bar, not null
*/
public Foo(Bar bar) {
this.bar = Objects.requireNonNull(bar);
}
Objects.requireNonNull
如果对象结果是null
. 我想IDE在这里建议不是理想的解决方案。
推荐阅读
- angular - 带有 Angular 的 Redux -?
- c++ - LNK2001:Caffe2 推理
- php - 在将复选框内爆到 url 后检查 $_GET 以重新选择先前选择的复选框
- linux - 挂载的 samba 共享 - 如何检查它是否在线
- symfony - Symfony 路由访问检查
- c++ - DJI M210 校准前置立体摄像头以获得深度感知
- mongodb - 在 mongo 中搜索对象数组
- php - Symfony 4 TextType required = false 得到“字符串”类型的预期参数,给定“NULL”
- android - 干净的架构和身份验证
- c# - 如何创建或使用现成的 Shims 从 .net 框架移植到 .net 核心/标准?