我有一个标准的Java bean,MyJavaBean。假设它有50个变量,我用eclipse生成了50个getter和50个setter。
这个bean由一些业务逻辑组装线填充,现在我想遍历所有50个元素。例如,实现一个to-string方法。当然我不想调用每个getter方法。
现在有一些明显但很长的方法:
实现bean,以便它随时更新它的元素集合,然后只为它编写一个getter
通过将每个元素添加到集合并返回
所以我有两个问题:
如果我有一个包含50个元素的bean,我是否已经犯了错误?这是一种消极模式吗?
我怎样才能以更聪明的方式做到这一点?是否有一些库将返回给定JavaBean的元素集合,使用反射或类似的东西?
答案 0 :(得分:1)
如果你的类是JavaBean,我建议不要直接访问这些字段,而是使用JavaBeans / BeanInfo机制。您可以直接使用Introspector
或通过Apache Commons / BeanUtils或Spring'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()); }