Как заставить Java задуматься о точечных полях в суперклассе? не только фактический класс
Недавно я немного изменил свою схему, поэтому мои классы наследуются от суперкласса, проблема в том, что мой метод сравнения, который генерирует журнал аудита с использованием отражения Java, теперь выполняет только циклы по полям дочернего класса, а не суперкласса. Есть ли способ получить все поля? или мне нужно отлить это в супер класс .....?
Вот мой метод ниже:
<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>