ser*_*rah 2 java functional-programming java-8 java-stream
当我的交易对手可以是时,我如何null使用 Java 8 处理以下代码中的检查null。counterParty我只想在它有值时设置,如果它为空则不设置。
public static Iterable<? extends Trade> buildTrade (final List<Trade> trade) {
return () -> trade.stream()
.map(trade -> Trade.newBuilder()
.setType(trade.type())
.setUnit(trade.unit())
.setCounterParty(trade.counterParty())
.build())
.iterator();
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码:
trade.stream()
.map(trade -> {
TradeBuilder tb = Trade.newBuilder()
.setType(trade.type())
.setUnit(trade.unit());
Optional.ofNullable(trade.counterParty())
.ifPresent(tb::setCounterParty);
return tb.build();
})
.iterator();
Run Code Online (Sandbox Code Playgroud)
或者没有Optional:
trade.stream()
.map(trade -> {
TradeBuilder tb = Trade.newBuilder()
.setType(trade.type())
.setUnit(trade.unit());
if(trade.counterParty() != null) tb.setCounterParty(trade.counterParty());
return tb.build();
})
.iterator();
Run Code Online (Sandbox Code Playgroud)