1
有一種方法接收「someObj」,其目的是檢查Set <>類型的變量ASet,遍歷它並將其對象替換爲數據庫對象。爲此我寫了下面的代碼:Java 8可選/功能代碼優化
if(!CollectionUtils.isEmpty(someObj.getASet())){
someObj.setASet(
someObj.getASet()
.stream()
.map(c -> AService.getExistingA(c.getId()))
.collect(Collectors.toSet())
);
}
它的目的,但我真的不滿意它的可讀性。
Optional.ofNullable(someObj.getASet())
.ifPresent(ASet-> someObj.setASet(
ASet.stream()
.map(c -> AService.getExistingA(c.getId()))
.collect(Collectors.toSet())
));
現在它看起來更不可讀,你能推薦一個更好的方法嗎?我認爲最糟糕的問題是,someObj.setASet,它看起來很奇怪,是否有任何功能的方式來取代收集後的對象?
在我的頭上,將打破,所以我剛纔讀裏面可選的地圖文檔: 如果值存在,適用提供的映射函數給它,如果結果爲非null,則返回一個描述結果的可選項。否則返回一個空的可選。 我愛它,大thx – Als
總是很好的閱讀文檔.... –
但更好的選擇是修復API設計。如果'getASet()'永遠不會返回'null',而只是一個空集,那麼整個'Optional' /條件邏輯就變得不必要了。 – Holger