Java8引入了可选的方法来处理NPE。在实际应用中,我不能理解一个问题。
我有方法A
public void doSomethingA(String para) {
Optional<String> name = Optional.of(para);
if (name.isPresent()) {
//do
}
}
但是如果para=null,它将抛出NPE。
方法B
public void doSomethingB(String para) {
if (para != null) {
//do
}
}
如果我检查para不为null,A和B之间的区别是什么。
“可选”的含义在哪里。
可选并不能防止抛出一个NPE,这使得它很容易避免,但你必须做你的一部分,例如,我会重构你的代码到这样的东西。
public void doSomethingA(String para) {
Optional<String> optName = Optional.ofNullable(para);
String name = optName.orElse("Unknown");
//At his point, you are completely sure that name is even given name or "Unknown"
//and can do wherever you want without being afraid of throwing a NPE
}
您可以使用其他可选方法,如:optName。OrelsThrow()
若参数为null,则抛出并出错,optName。orElseGet(()-
如果您不确定是否有值,但您不希望抛出NullPointerExc0019,请使用Optional.ofNullable
。
使用可选。如果您知道自己有一个非空值,或者如果抛出了一个
NullPointerException
,您就可以了。
关于你剩下的问题:为什么
null
或可选
,你可能会发现下面的问题很有用:可选vs. null。Java8中可选的目的是什么?
您的问题可能还与:为什么使用可选选项有关。超过可选的。不可能吗?
默认情况下,MapStruct将NullValueMappingStrategy作为RETURN_NULL。我的要求是,当source为null时,我需要抛出一个NPE,类似于lombok的@nonnull的工作方式。
问题内容: 我实际上何时需要调用此方法Runtime.getRuntime()。addShutdownHook()以及何时或为何需要关闭应用程序。任何人都可以通过举例说明一下。 谢谢 问题答案: 据我所知,我将在下面进行解释。您可以搜索它并找到很多信息。 将注册一些在程序终止时要执行的动作。您启动的程序以两种方式结束: 主线程(根)结束其运行上下文; 该程序遇到一些意外情况,因此无法继续进行。 如
我试图访问内部对象,而不会导致空指针异常。我希望避免手动编写if条件null检查,而是使用利用java 8特性。 我从findFirst方法中获得Nullpointer异常。我知道如果所选元素为null,findFirst会返回null指针异常,所以我在调用findFirst之前尝试使用过滤器(objects::nonNull)过滤出null对象,但它仍然会抛出null指针。 看起来我的过滤不起作
我正在使用ModelMapper进行NPE 目录服务测试 目录服务 目录映射器 目录库 按预期返回CatalogEntity对象,问题出现在执行返回null之后。
是否需要在之前调用?为什么?我看不出有什么不同,但我看到很多人这样做。