class Foo{
int id;
String name;
int bar;
int bar2;
//..
}
Foo foo = new Foo();
有没有办法在java中迭代这个对象属性?我想创建一个INSERT查询,我必须转换字符串中的所有int属性。当有更多不同类型的属性时,这有点问题。
谢谢!
答案 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。