Re: [問題] Java Intropection的代價是否很貴?

看板java作者 (畢業了..@@")時間11年前 (2014/01/23 09:10), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《dream1124 (全新開始)》之銘言: : 會問這個問題,是因為好像曾經聽過這類說法 : 再加上最近看過 apache BeanUtils 的原始碼以後, : 發覺原來就算只是物件的屬性蓋來蓋去也可以這麼複雜.... : 既是查找,然後定義再比對,最後還要快取 : 密密麻麻程式碼讓我不知如何下手... 其實我想解決的問題不複雜啊~ Orz : 現在很流行讓屬性的 setter 有回傳值,然後型態設定為物件自己, : 接著理所當然在設定完屬性後回傳自己,方便使用者連續呼叫 setter 設定屬性。 : 只是公司多年長期維護下來的案子已經很舊了 : 裡面依賴的 struts1 , apache BeanUtils 2.1, 都不覺得這種 setter 是合理的, : 讓我想把物件的 setter 回傳自己的構想很難實行.... : 因此有自行實現 BeanUtils 工具的想法 : 只是看到 BeanUtils 的原碼令我有些卻步, : 想請問有什麼方法可以解決像這樣的需求呢? : 不管是開發新工具還是改舊的工具,請問大家會怎麼做呢? 還是要用javabean標準的setter/getter吧... fluent interface不是標準javabean.. 不建議修改你原專案這邊的code 如果你想用fluent interface 我建議包成builder pattern (這就很常見用fluent interface) 假設你有一個Car的javabean.. 中間有些Wheel啊..Handler啊..什麼的要產生 我會用 Car car = new CarBuilder() .setMaxSpeed() .createWheels(xxx) .createHandler(xxx) .build(); 但是Car, Wheel, Handler裡面都還是會用javabean的方式來做setter/getter -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.46.230

01/23 22:30, , 1F
好方法! 謝謝你!
01/23 22:30, 1F

01/24 00:48, , 2F
不就是上一篇 wiki 寫的方法嗎?可見原 po 沒看參考資料...
01/24 00:48, 2F

01/24 00:53, , 3F
不好意思, 沒有仔細看 wiki 參考資料
01/24 00:53, 3F
文章代碼(AID): #1Iu6mBW2 (java)
文章代碼(AID): #1Iu6mBW2 (java)