2014-12-03 49 views
2

我有一個具有大約30個變量的操作類。這些領域的獲取者和設置者弄亂了我的代碼並添加了不必要的行。有沒有辦法反映所有的private字段,並使它們對Struts「可見」?Struts 2中的反射

+0

您想在哪裏使用此功能?在表示層(屏幕)上? – 2014-12-03 09:00:26

+0

是@Buhake Sindi。 Struts似乎只能通過getter和setter來訪問變量,但這不是好的做法 – 2014-12-03 11:10:50

+3

@VladMatvei它*是一種在Java Beans中使用getter和setter的好習慣,但您的問題是額外序號+1。 – 2014-12-03 11:18:01

回答

0

聽起來像是對我錯誤的做法。

在Java的OO和封裝概念中,獲取器和設置器是非常基礎的。如果您不喜歡編寫 getters和setter或者使用像Lombok(http://projectlombok.org/index.html)這樣的框架,或者選擇其他語言,例如Gradle。

大多數(如果不是全部的話)Java代碼使用它們,所以也許你認爲它們搞砸了代碼有點不對。一個好的IDE應該可以幫助你擺脫困境。

哦,反射增加了大量的性能開銷,完全不是爲了短路訪問私有成員。

0

實際上你並不需要getter和setter來讓OGNL工作。但不要這樣做。

如果您的擔心是更大類的「開銷」,那麼創建一個封裝視圖狀態並僅公開該對象的對象。您也可以通過ModelDriven界面來完成此操作;一些注意事項適用。

獲得者和設置者在Java中是相同的課程。習慣它。使用自動摺疊簡單的getXxx/setXxx方法的IDE。開始使用演示者模式來封裝視圖狀態並將其用作Web和業務域對象之間的翻譯層。

+0

我的實體是不可變的,我猜ModelDriven接口不適用於我。但是我可以寫一個DTO對象,這會是一個好方法嗎? – 2014-12-03 22:57:38