-1

我有一个具有以下 6 个属性的 POJO。我只需要使用反射获得 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()获得5个字段名,除了'phone'。我怎样才能得到字段名称?是否可以从 pojo 中仅获取特定字段名称而不是所有字段名称?

谢谢!

4

2 回答 2

0

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

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

于 2012-10-17T10:29:43.090 回答
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)

更新: -

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

for(Field field: aClass.getDeclaredFields()) {
    if (!field.getName().equals("phone")) {
        // Process it
    }
}
于 2012-10-17T10:26:23.590 回答