1
在Site
類中,我有兩種實用方法。使用Java 8的可選項在列表處理中避免「空檢查」
第一個,parseStub
,解析一個Site
成Master
如果沒有發生錯誤;否則,返回null
。使用Optional
:
public static Optional<Master> parseStub(Site site) {
// do some parse work; return Optional.empty() if the parse fails.
}
第二種方法parseStubs
是解析的Site
列表成Master
列表。它重用parseStub
,並具有處理可能爲空Optional<Master>
:
public static List<Master> parseStubs(List<Site> sites) {
return sites.stream()
.<Master>map(site -> Site.parseStub(site).orElse(null))
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
注意,在上面的代碼中,我再次介紹
null
。
我怎樣才能避免null
(和filter(Objects::nonNull)
)持續使用Optional
?
的Java 9:'flatMap(網站 - > Site.parseStub(網站).stream())收集(toList())' – Holger