使用java反射获取属性/字段?

时间:2012-10-17 10:23:43

标签: java reflection

我有一个POJO,有6个属性,如下所示。我需要使用反射只获得5个字段名称。

class Employee {

private Long id;
private String address;
private String phone;
private String firstName;
private String lastName;
private String designation;

//getters and setters

}

但我希望只使用java反射getFields()获得除'phone'之外的5个字段名称。我怎样才能获得字段名称?是否可以只获取特定的字段名称而不是pojo中的所有字段名称?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将字段名称传递给getField()方法: -

Class<Employee> aClass = Employee.class
Field field = aClass.getField("address");  // For public fields

但这只会抓取你public fields

您可以使用private fields

获取getDeclaredField("fieldName")
Field f = aClass.getDeclaredField("address"); //For all fields(Including private)

更新: -

如果您没有字段名称,则必须遍历所有字段并使用Field.getName()方法手动使用字段名称过滤数组。没有其他出路: -

for(Field field: aClass.getDeclaredFields()) {
    if (!field.getName().equals("phone")) {
        // Process it
    }
}

答案 1 :(得分:0)

不,没有“获取除”以外的所有字段的API。

只需获取所有字段并测试您不想要的字段名称,然后在处理过程中跳过它。