Java 避免在不同情况下重复相同的if案例
我有以下代码:Java 避免在不同情况下重复相同的if案例,java,Java,我有以下代码: if (product != null) { //tryToGetProductFromOnePlace } if (product != null) { //tryToGetProductFromSecondPlace } if (product != null) { //tryToGetProductFromThirdPlace } if (product != null) { //tryToGetProductFromFourthPla
if (product != null) {
//tryToGetProductFromOnePlace
}
if (product != null) {
//tryToGetProductFromSecondPlace
}
if (product != null) {
//tryToGetProductFromThirdPlace
}
if (product != null) {
//tryToGetProductFromFourthPlace
}
return product;
我想重构这段代码,让它看起来更好,但我没有任何想法。我不能使用递归,因为获取产品的逻辑总是不同的。在if的情况下,我不能返回它,因为我需要得到值,并且只有当这4个组合都不正常时,才返回null。有关于如何改进代码的建议吗?您可以重写方法以返回
可选值,而不是null
,然后使用可选的或方法链接它们:
return this.tryToGetProductFromOnePlace()
.or(this::tryToGetProductFromSecondPlace)
.or(this::tryToGetProductFromThirdPlace)
.or(this::tryToGetProductFromFourthPlace);
如果出于某种原因,您需要保留返回null
的外部接口,而不是为缺少的值保留Optional.empty()(Offer Offer,String productId){return getProductVendorForCollectiveTreaty(Offer,productId).orElse(getProductVendorForParentMasterTreaty(Offer,productId).orElse(getProductVendorForSubParentMasterTreaty)(Offer,productId).orElse(null));}
实际上我想做的是:私有产品供应商或响应evaluateProductVendor(Offer Offer,String productId){返回tryToGetProductFromOnePlace().OrelGet(()->tryToGetProductFromSecondePlace().OrelGet()->tryToGetProductFromThirdPlace().OrelGet(()->tryToGetProductFromFourthPlace().orElse(null));}