Voici une solution qui trie les propriétés par ordre alphabétique et les imprime toutes avec leurs valeurs :
public void logProperties() throws IllegalArgumentException, IllegalAccessException {
Class aClass = this.getClass();
Field[] declaredFields = aClass.getDeclaredFields();
Map logEntries = new HashMap<>();
for (Field field : declaredFields) {
field.setAccessible(true);
Object[] arguments = new Object[]{
field.getName(),
field.getType().getSimpleName(),
String.valueOf(field.get(this))
};
String template = "- Propriété : {0} (Type : {1}, Valeur : {2})";
String logMessage = System.getProperty("line.separator")
+ MessageFormat.format(template, arguments);
logEntries.put(field.getName(), logMessage);
}
SortedSet sortedLog = new TreeSet<>(logEntries.keySet());
StringBuilder sb = new StringBuilder("Propriétés de la classe :");
Iterator it = sortedLog.iterator();
while (it.hasNext()) {
String key = it.next();
sb.append(logEntries.get(key));
}
System.out.println(sb.toString());
}