簡體   English   中英

Java bean:實現元素迭代器的最快方法?

[英]Java bean: Fastest way to implement an iterator of elements?

我有一個標准的Java bean,MyJavaBean。 假設它有50個變量,我用eclipse生成了50個getter和50個setter。

這個bean由一些業務邏輯組裝線填充,現在我想遍歷所有50個元素。 例如,實現一個to-string方法。 當然我不想調用每個getter方法。

現在有一些明顯但很長的方法:

  • 實現bean,以便它保持最新的元素集合,然后只為它編寫一個getter

  • 通過將每個元素添加到集合並返回它來手動實現迭代器

所以我有兩個問題:

  • 如果我有一個含50個元素的豆子,我已經犯了錯誤嗎? 這是一種消極模式嗎?

  • 我怎么能以更聰明的方式做到這一點? 是否有一些庫將返回給定JavaBean的元素集合,使用反射或類似的東西?

如果您的類是JavaBean,我建議不要直接訪問這些字段,而是使用JavaBeans / BeanInfo機制。 您可以直接使用Introspector或通過Apache Commons / BeanUtilsSpring的BeanWrapper抽象等輔助庫來實現。

請查看我以前的答案以供參考:

Java反射:我如何獲得java類的所有getter方法並調用它們

它確實聞起來像反模式。 如果您的類只包含數據而沒有業務邏輯,那么最好實現基於HashMap的數據結構,特別是如果數據字段可能在將來發生變化。 但是,如果不了解項目的要求,很難說清楚。

您始終可以使用反射遍歷普通舊Java類的字段。

特別是,使用Class.getFields方法確定給定類的字段:

Field[] fields = MyJavaBean.class.getFields();
   for (Field field : fields)
   {
       System.out.println ("Field: " + field.getName());
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM