2011-09-19 88 views
5

可能重複:
How to loop over a Class attributes in Java?遍歷對象在Java屬性

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

    //.. 
} 

Foo foo = new Foo(); 

有沒有一種方法來遍歷這個對象在java中的屬性?我想創建一個INSERT查詢,我必須轉換字符串中的所有int屬性。當存在更多不同類型的屬性時,這是有點問題的。

謝謝!

+0

這個問題沒有重複,有一件事是循環CLASS屬性,其他的事情是循環通過OBJECT屬性。 –

回答

0

您可以使用Java反射來執行此操作。

3

我認爲this以前的SO帖子應該可以幫助你做任何你需要的東西。

0

你可以通過調用getDeclaredFields()方法讓Foo.class對象(或foo.getClass()得到Foo類的所有字段。getDeclaredFields()如果你手上的類實例。

getDeclaredFields()返回Field對象(在java.lang.reflect包申報)的數組。

似乎要與數據庫中的對象的工作,所以它可能是好的採取查看Java Persistence API,而不是手動生成INSERT語句,因爲這樣可以爲您提供更多的功能,而無需在SQL上手動完成這麼多工作。

3

如果屬性的順序是不相關的使用Apache Commons BeanUtils

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

注意BeanUtils不使用仿製藥,所以要轉換。

附加說明:您的對象必須遵守JavaBeans規範才能使用此方法。