gpt4 book ai didi

java - 需要一些关于 requireNonNull 的说明

转载 作者:搜寻专家 更新时间:2023-11-01 07:42:55 26 4
gpt4 key购买 nike

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 checkrequireNonNull 好,你说呢?如果是,那么编辑器不应建议在那里使用 requireNonNull

因为在状态为 Activity 的字段中使用 requireNonNull 是不安全的。我是不是错过了 requireNonNull 的一些好处?

最佳答案

显式的 null 检查在这里是正确的,因为你想防止在 getActivity 返回 null 时抛出 NullPointerException。

Objects.requireNonNull() 通常用于参数验证(快速失败),例如可以在构造函数中使用:

/** 
* Constructs a new Foo instance.
*
* @param bar a bar, not null
*/
public Foo(Bar bar) {
this.bar = Objects.requireNonNull(bar);
}

Objects.requireNonNull 将抛出一个 NullPointerException(这是一个 RuntimeException),如果对象结果为 null。我想 IDE 在这里建议的不是理想的解决方案。

关于java - 需要一些关于 requireNonNull 的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51608454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com