我有这段代码,我试图找出什么是最好的方法来避免空指针异常使用Java8?
promotion.forEach(item ->
item.getDiscount().getPromotions().forEach(promotion -> {
// logic code here
})
);
你是否在考虑诸如可选:
item.getDiscount().getPromotions().stream().forEach(promotion ->
Optional.ofNullable(promotion).ifPresent(p -> {
// logic code
} )
);
编辑:如果item.get折扣()
可能为空,那么您可以尝试:
Optional.ofNullable(item.getDiscount()).ifPresent(d ->
d.getPromotions().stream().forEach(promotion ->
Optional.ofNullable(promotion).ifPresent(p -> {
// logic code
} )
)
);
promotion.stream()
.map(item->item.getDiscount()).filter(Objects::nonNull)
.map(discount->discount.getPromotions()).filter(Objects::nonNull)
.forEach(innerPromotion->{//logic code});
在逻辑代码中使用空元素之前,您可以过滤掉所有空元素,以便只有非空元素才能运行逻辑代码。
避免NullPointerExceptions的最佳方法是避免空值。在您的示例中,确保所有方法永远不会返回null。
而不是返回null你有几个选项:
我在android fragment中找到了许多避免内存泄漏的方法,但哪种方法是最好的? 1.将视图设置为null时onDestRoyView被调用 2.将所有子视图设置为null并删除该视图
我正在一个项目,需要处理成千上万的活动套接字并发连接。现在我正在查看内存使用和V8引擎,我使用的是Node.js V0.10.19(稳定)
问题内容: 我使用Java在Selenium WebDriver中编写了一些测试用例,并在网格(集线器和多个节点)上执行它们。我注意到有一些测试案例由于导致失败。避免并确保始终找到该元素的最佳且可靠的方法是什么? 问题答案: 您永远无法确定会找到该元素,实际上这是功能测试的目的- 告诉您页面上是否有任何更改。但有一两件事肯定是有帮助是添加等待这往往导致元素像
我有一个变量(testvariable),根据变量的isNull,我需要做一个方法调用,如下所示 在可选的
让我们看一下使用两种不同的方式去计算单词的个数,第一种方式使用 reduceByKey 另外一种方式使用 groupByKey: val words = Array("one", "two", "two", "three", "three", "three") val wordPairsRDD = sc.parallelize(words).map(word => (word, 1)) val
null本身不是对象,也不是Objcet的实例 问题: null代表不确定的对象, 是一个很模糊的概念, 容易产生二义性 Map.get(key)若返回value值为null,其代表的含义可能是该键指向的value值是null,亦或者该键在map中并不存在 优点: 从内存消耗和效率方面,null更加廉价 优化: Optional com.google.common.base.Optional Op