要查看是否有類具有不依賴於異常的屬性,可以使用以下方法:
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
(這就是爲什麼你需要使用拳頭代碼,看看如果類的屬性)
更多細節真的有助於回答。代碼示例也許? – Erwald 2012-04-14 19:26:07