如何在获取 aList.get(0) 时编写安全的 java.util.Optional 空指针赋值?
How can I write safe java.util.Optional null pointer assignment when getting aList.get(0)?
当我对 .getList().get(0) 的调用为空时,我会抛出以下代码。
Optional<MyObject> _obj = java.util.Optional.ofNullable(objParam);
// where getListOfMyObjects() returns List<MyObjects>
Optional<String> desc = Optional.ofNullable(_obj.get().getMyParentObject().getListOfMyObjects().get(0).getDesc());
如何编写安全的 java 8 防止 .getList().get(0) 抛出的可选代码(使用 .map 等)?
这是你想要做的吗?
Optional<String> desc = Optional.ofNullable(objParam)
.map(MyObject::getMyParentObject)
.map(MyObject::getListOfMyObjects)
.filter(lst -> ! lst.isEmpty())
.map(lst -> lst.get(0))
.map(MyObject::getDesc);
另一种方法是获取列表的 stream
,然后使用 findFirst
。我不确定在 optional 中使用 streams 是否很清楚,但你会这样做:
Optional<String> desc = Optional.ofNullable(objParam)
.map(MyObject::getMyParentObject)
.map(MyObject::getListOfMyObjects)
.map(List::stream)
.flatMap(Stream::findFirst)
.map(MyObject::getDesc);
当我对 .getList().get(0) 的调用为空时,我会抛出以下代码。
Optional<MyObject> _obj = java.util.Optional.ofNullable(objParam);
// where getListOfMyObjects() returns List<MyObjects>
Optional<String> desc = Optional.ofNullable(_obj.get().getMyParentObject().getListOfMyObjects().get(0).getDesc());
如何编写安全的 java 8 防止 .getList().get(0) 抛出的可选代码(使用 .map 等)?
这是你想要做的吗?
Optional<String> desc = Optional.ofNullable(objParam)
.map(MyObject::getMyParentObject)
.map(MyObject::getListOfMyObjects)
.filter(lst -> ! lst.isEmpty())
.map(lst -> lst.get(0))
.map(MyObject::getDesc);
另一种方法是获取列表的 stream
,然后使用 findFirst
。我不确定在 optional 中使用 streams 是否很清楚,但你会这样做:
Optional<String> desc = Optional.ofNullable(objParam)
.map(MyObject::getMyParentObject)
.map(MyObject::getListOfMyObjects)
.map(List::stream)
.flatMap(Stream::findFirst)
.map(MyObject::getDesc);