我有一个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中的所有字段名称?
谢谢!
答案 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。
只需获取所有字段并测试您不想要的字段名称,然后在处理过程中跳过它。