gpt4 book ai didi

java - 从嵌套可选检查中的列表中获取元素

转载 作者:行者123 更新时间:2023-11-30 06:01:19 28 4
gpt4 key购买 nike

我有以下嵌套空检查。尝试通过 Optional 使其可读,但如何映射第一个元素?

卡在下面,不确定如何映射这条线

vo.getSomething().getAnother().get(0)

我被困在第三行了

Optional.of(vo.getSomething)
.map(Something::getAnother)
.map(List<Another>::get(0)) // will not work

这是一个有效的空检查。我正在尝试使用Optional 来清理它。

if(vo.getSomething() != null){
if(vo.getSomething().getAnother() != null){
if(vo.getSomething().getAnother().get(0) != null){
if(vo.getSomething().getAnother().get(0).getInner() != null){
if(vo.getSomething().getAnother().get(0).getInner() != null){
if(vo.getSomething().getAnother().get(0).getInner().get(0) != null){
return vo.getSomething().getAnother().get(0).getInner().get(0).getProductName();
}
}
}
}
}
}

最佳答案

lambda 表达式

.map(list -> list.get(0))

应该可以工作。有些想法无法通过方法引用来表达。

List<Another>::get(0)不是有效的方法引用,而 List<Another>::get可以。

BiFunction<List<String>, Integer, String> function = List::get;

该表达式的问题在于它有一个常量 0并且您需要显式地传递它。

但是,您可以编写静态方法

class ListFunctions {
public static <T> T getFirst(List<? extends T> list) {
return list.get(0);
}
}

并通过方法引用引用它

.map(ListFunctions::getFirst)

关于java - 从嵌套可选检查中的列表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972252/

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