如何创建一个将代码设置为BYTES
或SECONDS
的代码。我在设置默认BYTES
之前使用SECONDS
功能调用覆盖了setTypeAsSecondsIfCcTimeIsValid
} else if (mscc.getRsu().isPresent()) {
type = Type.BYTES;
mscc.getRsu().get().getCcTime().ifPresent(this::setTypeAsSecondsIfCcTimeIsValid);
}
答案 0 :(得分:3)
这样的事情应该有效:
type = mscc.getRsu().flatMap(rsu -> rsu.getCcTime())
.filter(ccTime -> isCcTimeValid(ccTime))
.map(ccTime -> Type.BYTES).orElse(Type.SECONDS);
但是我会改用三元:
type = mscc.getRsu().flatMap(rsu -> rsu.getCcTime())
.filter(ccTime -> isCcTimeValid(ccTime))
.isPresent() ? Type.BYTES : Type.SECONDS;
此代码假定您使用isCcTimeValid
方法。