Como fazer o Java refletir para detectar campos na superclasse? não apenas a aula real
Eu recentemente mudei meu esquema um pouco para que minhas classes herdam de uma superclasse, problema é meu método de comparação que gera um log de auditoria, usando Java refletir, agora é apenas loop pelos campos da classe filha, não a superclasse, é Existe uma maneira de obter todos os campos? ou eu preciso lançá-lo na superclass .....?
Heres meu método abaixo:
<code>public static <T> String GenerateChangeLogForEntity(T old, T updated) { String text = ""; try { Field[] fields = old.getClass().getDeclaredFields(); if(fields != null) { BaseController.getLogger().info("Z1 num fields:"+fields.length); for (Field field : fields) { if(field.isAnnotationPresent(Column.class)) { String fieldName = field.getName(); BaseController.getLogger().info(field.getName()); if(field.isAnnotationPresent(Variation.class)) { Variation v = field.getAnnotation(Variation.class); fieldName = v.friendlyName(); } field.setAccessible(true); if(field.get(old) != null && field.get(updated) != null) { if(!(field.get(old)).equals(field.get(updated))) { text += "<p><span class=\"field-name\">"+fieldName+"</span> changed from: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(old))+"</strong> to: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(updated)) + "</strong></p>"; } } if(field.get(old) == null && field.get(updated) != null) { text += "<p><span class=\"field-name\">"+fieldName+"</span> changed from: <strong>empty</strong> to: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(updated)) + "</strong></p>"; } if(field.get(old) != null && field.get(updated) == null) { text += "<p><span class=\"field-name\">"+fieldName+"</span> changed from: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(updated))+"</strong> to <strong>empty</strong>" + "</p>"; } field.setAccessible(false); } } } } catch(IllegalAccessException e) {} return text; } </code>