2010-09-15 102 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。