Java bean:实现元素迭代器的最快方法?

时间:2014-02-05 12:21:27

标签: java collections javabeans

我有一个标准的Java bean,MyJavaBean。假设它有50个变量,我用eclipse生成了50个getter和50个setter。

这个bean由一些业务逻辑组装线填充,现在我想遍历所有50个元素。例如,实现一个to-string方法。当然我不想调用每个getter方法。

现在有一些明显但很长的方法:

  • 实现bean,以便它随时更新它的元素集合,然后只为它编写一个getter

  • 通过将每个元素添加到集合并返回

  • 来手动实现迭代器

所以我有两个问题:

  • 如果我有一个包含50个元素的bean,我是否已经犯了错误?这是一种消极模式吗?

  • 我怎样才能以更聪明的方式做到这一点?是否有一些库将返回给定JavaBean的元素集合,使用反射或类似的东西?

2 个答案:

答案 0 :(得分:1)

如果你的类是JavaBean,我建议不要直接访问这些字段,而是使用JavaBeans / BeanInfo机制。您可以直接使用Introspector或通过Apache Commons / BeanUtilsSpring's BeanWrapper抽象等帮助程序库来执行此操作。

请查看我以前的答案以供参考:

  

<强> Java Reflection: How can i get the all getter methods of a java class and invoke them

答案 1 :(得分:0)

它确实闻起来像反模式。如果您的类只包含数据而没有业务逻辑,那么最好实现基于HashMap的数据结构,特别是如果数据字段可能在将来发生变化。但是,如果不了解项目的要求,很难说清楚。

您始终可以使用reflection遍历普通旧Java类的字段。

特别是,使用Class.getFields方法确定给定类的字段:

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