【发布时间】:2014-11-07 12:58:53
【问题描述】:
我想验证对象 A(比如 a)中的所有属性。类 A 具有复合对象 B,它具有自己的属性。
A类
public Class A {
private String name;
private B b;
private Set<SomeObject> fields = new HashSet<SomeObject>();
//getter and setters for name and b
}
B类
public Class B {
private String address;
private String dob;
//getter and setters for address and dob
}
-----编辑 ----- 类 SomeObject
public Class SomeObject{
private Double amount;
//getter and setters for amount
}
使用反射获取值name和对象b的逻辑
Field[] fields = a.getClass().getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
System.out.println(" *** Field Name *** " + fieldName);
field.setAccessible(true);
Object obj1 = field.get(a);
System.out.println(" *** Object 1 *** " + obj1);
}
--编辑 ---
我使用反射来动态获取 name 的值。但是我怎么知道属性 B 是复合对象还是另一个对象的集合,我应该对 B 应用反射以获取 address 和 dob 的值。同样,我如何从 Set 中获取值并在迭代中应用反射。没有迭代有没有更好的解决方案。
反过来,我应该确定一个类是包装类(字符串、整数等)还是用户定义的类(用户定义的 Bean)。如果包装类/原语则没有 getter 调用。同样,如果它是集合或其他东西,我应该迭代并在每个对象上应用反射以获得 amount
是否有任何可用的 java API 可以从复杂对象中提取这种级别的数据。例如 EquiBuilder、BeanUtils 等
谁能帮忙。
【问题讨论】:
标签: java reflection comparison getter