我有一个约90字段的Java类。我希望能够为每个领域做些事情(例如生成一个XML元素),而无需使用90次轻微替换编写相同的5行代码。在Objective C中,我认为你可以用类似于访问Dictionary元素(ObjectForKey)的方式获取实例变量。在Java中有没有类似的东西,我可以得到一个字段数组,然后对每个字段做一些事情?枚举Java字段
Q
枚举Java字段
3
A
回答
5
是的,它叫做Reflection API。
尤其MyClass.class.getDeclaredFields()
将返回此类声明的字段的完整列表(see API for details)
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。
相关问题
- 1. Java枚举找到枚举
- 2. Java类枚举枚举类
- 3. Spring roo,字段枚举
- 4. 区分枚举和字段
- 5. 在枚举java
- 6. Java的枚举和PostgreSQL枚举
- 7. 是枚举Java中的枚举
- 8. Java在枚举中的枚举
- 9. Java:旧枚举子集的新枚举
- 10. Java的枚举:一个内有多个字符串枚举
- 11. 枚举在Java中
- 12. Java枚举处理
- 13. 抽象Java枚举
- 14. Java枚举等于
- 15. 使用Java枚举
- 16. ID3 Java枚举树
- 17. Java枚举协会
- 18. Java枚举方法
- 19. Java枚举订购
- 20. Java级联枚举?
- 21. 枚举文字
- 22. 最后字段代替枚举
- 23. 如何使RequiredAttribute使用枚举字段
- 24. 有很多字段的枚举设计
- 25. 根据字段值显示枚举值
- 26. Unmarshall字段到枚举 - 可能吗?
- 27. 如何使字段枚举迁移yii2
- 28. MySQL将字段添加到枚举
- 29. Java的枚举实现一个字段的唯一性
- 30. 如何在Java中使用map作为字段创建枚举?