Java大師請進已刪文
在寫處理一種特殊格式電文的程式
電文內容是純字串要自己切
裡面會包含很多欄位
可能長這樣
...
: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
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):