要查看一个类是否具有不依赖异常的属性,可以使用以下方法:
private Boolean objectHasProperty(Object obj, String propertyName){
List<Field> properties = getAllFields(obj);
for(Field field : properties){
if(field.getName().equalsIgnoreCase(propertyName)){
return true;
}
}
return false;
}
private static List<Field> getAllFields(Object obj){
List<Field> fields = new ArrayList<Field>();
getAllFieldsRecursive(fields, obj.getClass());
return fields;
}
private static List<Field> getAllFieldsRecursive(List<Field> fields, Class<?> type) {
for (Field field: type.getDeclaredFields()) {
fields.add(field);
}
if (type.getSuperclass() != null) {
fields = getAllFieldsRecursive(fields, type.getSuperclass());
}
return fields;
}
并简单地调用:
objectHasProperty(objInstance, "myPropertyName");
其实无所谓类的实例,看看类有没有属性,不过我是这么弄的,只是为了友好一点。总结一下:我使 getAllFields 是递归的,以获取所有超类方法(在我的情况下,这很重要)
之后,如果您想查看所需对象中属性的值是什么,您可以调用:
PropertyUtils.getProperty(objInstance, "myPropertyName");
记住:如果objInstance
没有那个属性,上面的调用会抛出NoSuchMethodException
(这就是为什么你需要使用第一个代码来查看这个类是否有这个属性)