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

JavaBean:实现元素迭代器的最快方法?,java,collections,javabeans,Java,Collections,Javabeans,我有一个bog标准JavaBean,MyJavaBean。假设它有50个变量,我用eclipse生成了50个getter和50个setter 这个bean由一些装配线业务逻辑填充,现在我想遍历所有50个元素。例如,实现一个to string方法。当然,我不想调用每个getter方法 现在有一些明显但漫长的方法: 实现bean,使它的元素集合在运行时保持最新,然后只需为此编写一个getter 通过将每个元素添加到集合并返回该元素,手动实现迭代器 所以我有两个问题: 如果我有一个包含50个元素

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

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

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

  • 实现bean,使它的元素集合在运行时保持最新,然后只需为此编写一个getter

  • 通过将每个元素添加到集合并返回该元素,手动实现迭代器

所以我有两个问题:

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

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


闻起来确实像反模式。如果您的类只包含数据,而没有业务逻辑,那么最好实现基于HashMap的数据结构,特别是如果数据字段将来可能会更改的话。然而,如果不知道项目的需求,就很难判断

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

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

Field[] fields = MyJavaBean.class.getFields(); for (Field field : fields) { System.out.println ("Field: " + field.getName()); } Field[]fields=MyJavaBean.class.getFields(); 用于(字段:字段) { System.out.println(“字段:“+Field.getName()); }
如果您的类是JavaBean,我建议不要直接访问字段,而是使用JavaBeans/BeanInfo机制。您可以直接使用,也可以通过帮助程序库(如或抽象)来实现

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


因此,基本上您希望javabean使用generic
toString
方法,对吗?我希望javabean中的变量使用generic iterator。实现泛型toString只是一个示例用例。这可能不是运行时最快的,但实现时间最快。@SpaceTrucker与往常一样,在优化之前,找出是否确实存在瓶颈(通过分析等)。在确定瓶颈之前,为了完整性起见,最好使用高级方法,我最后使用的解决方案是:Map properties=BeanUtils.descripe(MyJavaBean);List List=newarraylist(properties.values());对于(objectobj:list){/*mylogic*/}