第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何正確地抽象這個

我如何正確地抽象這個

holdtom 2023-11-01 21:53:22
我在這里陷入兩難境地。因此,我有這個 Rest API,它充當使用它的另一個 API 和來自外部提供商的 SOAP API 之間的簡化代理。其中,我有 4 個方法對應于 4 個 Soap 端點,它們將數(shù)據(jù)從 Rest 請求 DTO-s 映射到 Soap 請求 DTO-s。4 個 Rest 請求 DTO 有一個 CommonDto,其中包含所有請求共有的一些對象。此常見 REST 請求 DTO 的某些字段可以為空,如果是這種情況,我會進行空檢查,以便我根本不會設置相應的 SOAP 請求字段,否則會使 SOAP 請求失敗。這4種方法基本上是這樣的:public RestResponseObject1 method1(RestRequestObject1 rRO1){   SoapRequestObject1 sRO1= new SoapRequestObject1();   Object commonField1= rR01.getCommonField1();//Object can be anything, BigDecimal, String, int,etc.   if(commonField1!=null){       sRO1.setCommonField1(commonField1);   }   BigDecimal commonField2= rR01.getCommonField2();   if(commonField2!=null){       sRO1.setCommonField2(commonField2.intValue());   }  //etc....  return Mapper.map(soapService.doSoapMethod1(sRO1);}此方法重復 4 次,使用不同的 RestRequestObjects、RestResponseObjects 和 SoapRequestObjects,但它們之間的公共字段類型不會改變。我的問題是,如何抽象空檢查,以便我不對每個方法重復它們,以便我的代碼更干凈?請注意,我無法選擇對 Soap 請求對象執(zhí)行任何操作,因為它們是通過 Swagger/OpenApi 自動生成的
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經(jīng)驗 獲得超8個贊

或者在上一個答案的基礎上,使其更加通用,這樣它也適用于其他請求對象


private <T, E> void setIfNotNull(E setterObject, BiConsumer<E, T> setter, T value) {

   if (value != null) {

       setter.accept(setterObject, value);

   }

}

有了這個你現(xiàn)在可以打電話


setIfNotNull(sRO1, sRO1::setCommonField1, rR01.getCommonField1());


查看完整回答
反對 回復 2023-11-01
?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

您可以從一個簡單的實用方法開始:

private static <T> void setIfNotNull(T object, Consumer<T> setter) {
  if (object != null) setter.accept(object);
}

然后你的主要代碼變成:

setIfNotNull(rR01.getCommonField1(), o -> sRO1.setCommonField1(o));
setIfNotNull(rR01.getCommonField2(), bd -> sRO1.setCommonField2(bd.intValue()));


查看完整回答
反對 回復 2023-11-01
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號