開發過程中,經常使用枚舉類操作一些分支情況,但是當入參在枚舉類中找不到時,就會拋異常,沒辦法進行 if(lbAppHomeOperator == null) 操作,這時我們可以使用 Enums.getIfPresent(XXXEnum.class, strEnum).orNull(); 進行處理。
*****業務代碼:
1、枚舉類
/** * @author D-L * @program: ella-server * @description: 聽書首頁發布操作 * @date 2021-01-12 11:24:18 */ @Slf4j public enum PublishLbAppHomeOperator { APPCN { @Override public void apply(LbListenMapper lbListenMapper) { lbListenMapper.publishLbHomePageAppCn(); log.info("國內app聽書首頁發布成功"); } }, APPOTHER { @Override public void apply(LbListenMapper lbListenMapper) { lbListenMapper.publishLbHomePageAppOther(); log.info("其他地區app聽書首頁發布成功"); } }, HDCN { @Override public void apply(LbListenMapper lbListenMapper) { lbListenMapper.publishLbHomePageHdCn(); log.info("國內HD聽書首頁發布成功"); } }, HDOTHER { @Override public void apply(LbListenMapper lbListenMapper) { lbListenMapper.publishLbHomePageHdOther(); log.info("其他地區HD聽書首頁發布成功"); } }, GUSHIJI { @Override public void apply(LbListenMapper lbListenMapper) { lbListenMapper.publishLbHomePageGushiji(); log.info("故事機聽書首頁發布成功"); } }; public abstract void apply(LbListenMapper lbListenMapper); }
2、提供一個 getIfPresent 判斷方法
/** * 判斷枚舉類中 是否存在傳入的枚舉值 * @param operatorEnum * @return */ private PublishLbAppHomeOperator getIfPresent(String operatorEnum) { return Enums.getIfPresent(PublishLbAppHomeOperator.class, operatorEnum).orNull(); }
3、具體調用
if(getIfPresent(operatorEnum) == null){ log.info("platformCode , siteCode --- check param error :{} , {}", platformCode , siteCode); response.setCodeAndMessage(PARAM_ERROR_CODE, PARAM_ERROR_DESC); return; }