2010-09-15 100 views
3

我有一個約90字段的Java類。我希望能夠爲每個領域做些事情(例如生成一個XML元素),而無需使用90次輕微替換編寫相同的5行代碼。在Objective C中,我認爲你可以用類似於訪問Dictionary元素(ObjectForKey)的方式獲取實例變量。在Java中有沒有類似的東西,我可以得到一個字段數組,然後對每個字段做一些事情?枚舉Java字段

回答

1

這裏的另一種方法:使用Introspector API與JDK來獲取類的豆般的性能。如果你的班級有getter和setter,並且不想直接訪問私人領域,這會很有幫助。 通過Introspector獲取BeanInfo並從中獲取所有propertyDescriptors。找到該屬性的獲取者。

我不得不承認,使用此API是有點麻煩和反射(尼基塔Rybak的建議)更直截了當。

但有一個實用Apache BeanUtils,它所有的刻苦努力使內部豆的工作變得簡單。

地址:

如果您使用的是反射API,我建議你註釋你的bean字段或您的getter方法使用自定義的註釋。

public class MyClassWith90Fields { 

    @XmlSerialize("name") 
    private String screenName; // shoudl serialize as <name>...</name> 

    @XmlSerialize 
    private String email; // shoud serialize as <email>...</email> 

    @XmlSerializeIgnore 
    pirvate boolean flag; // shoud not serialize as annotated as ignore 
} 

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.FIELD, ElementType.METHOD}) 
public @annotation XmlSerialize { 
    public String value; 
} 

完成後,您的代碼可以檢查(使用反射)帶註釋的字段並將它們序列化爲適當的XML。