Java大師請進已刪文

看板Marginalman作者 (|)時間3年前 (2022/08/28 18:25), 3年前編輯推噓0(002)
留言2則, 2人參與, 3年前最新討論串1/2 (看更多)
在寫處理一種特殊格式電文的程式 電文內容是純字串要自己切 裡面會包含很多欄位 可能長這樣 ... :21:usadapekoraUSD10000,00 ... 電文又分很多種,不同代號可能 電文1 電文2 這樣 那我在Java就每個電文寫一種class 並且裡面包含欄位 類似這樣 class MT103 { String col21_name; String col21_currency; BigDecimal col21_amount; } 因為電文內容長得很雞掰都要黏在一起 所以我要自己切 那我就想到用annotation的方式處理 @Column("21") @Length(min = 1, max = 11) String col21_name; @Column("21") @Length(min = 3, max = 3) @StartFrom(pos = 11) String col21_currency; ... 然後產生這個電文的物件的時候 就是把接到的完整字串內容丟進一個函數 接著開始處理 每個欄位依照annotation切資料下來放進欄位 問題在於Java的annotation沒辦法包含實作邏輯 所以我的折衷方案是在一個static util作一個函數 先找出這種電文對應的class,接著 foreach Field in class 然後逐一把 Field 跟對應欄位的文字內容 丟進函數 函數裡面, 就是每個要處理的annotation去做判定 if ( field.isAnnotationPresent(Length.class) ) { // 處理長度切割... } 這樣 結果就變成函數裡面很多if 因為這個函數要處理掉所有 annotation 雖然這樣是能跑 可是感覺不太物件導向 像這種annotation的邏輯一般會怎麼處理呢? -- ▂▂ 原 PO 的智力不足,導致發文失敗了呢。 ^q^ 為了順利發好廢文,請多讀書吧。   ◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.105.133 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1661682338.A.13E.html ※ 編輯: SuicideComet (36.225.105.133 臺灣), 08/28/2022 18:30:04

08/28 18:27, 3年前 , 1F
電文 銀行喔
08/28 18:27, 1F

08/28 18:31, 3年前 , 2F
對ㄚ
08/28 18:31, 2F
文章代碼(AID): #1Z2qAY4- (Marginalman)
文章代碼(AID): #1Z2qAY4- (Marginalman)