在java中迭代对象属性

时间:2011-09-19 08:00:22

标签: java database

  

可能重复:
  How to loop over a Class attributes in Java?

class Foo{
    int id;
    String name;
    int bar;
    int bar2;

    //..
}

Foo foo = new Foo();

有没有办法在java中迭代这个对象属性?我想创建一个INSERT查询,我必须转换字符串中的所有int属性。当有更多不同类型的属性时,这有点问题。

谢谢!

5 个答案:

答案 0 :(得分:13)

Class cls = Class.forName("Foo");
Field[] fields = cls.getDeclaredFields();

应使用反射返回该类的所有声明字段。 更多信息@ http://java.sun.com/developer/technicalArticles/ALT/Reflection/

答案 1 :(得分:3)

我认为this之前的SO帖子可以帮助您做任何您需要的事情。

答案 2 :(得分:3)

如果属性的顺序不相关,请使用Apache Commons BeanUtils

Foo foo = new Foo();
Map<String, Object> fields = (Map<String, Object>) BeanUtils.describe(foo);

请注意BeanUtils不使用泛型,因此是强制转换。

附加说明:您的对象必须遵守JavaBeans规范才能使用此方法。

答案 3 :(得分:0)

您可以使用Java Reflection来执行此操作。

答案 4 :(得分:0)

如果手头有类实例,可以通过在Foo.class对象(或foo.getClass()。getDeclaredFields()上调用getDeclaredFields()方法来获取Foo类的所有字段。

getDeclaredFields()返回一个Field对象数组(在java.lang.reflect包中声明)。

您似乎希望使用数据库中的对象,因此最好先查看Java Persistence API,而不是手动生成INSERT语句,因为这样可以为您提供更多功能而无需如此工作手动编写SQL。