J'ai écrit un toString() d'une classe en Java, l'autre jour, par l'écriture manuelle de chaque élément de la classe à une Chaîne et il m'est apparu que l'utilisation de la réflexion, il pourrait être possible de créer un générique de la méthode toString() qui pourrait fonctionner sur TOUTES les classes. I. E. il serait de trouver les noms de champ et les valeurs et de les envoyer à une Chaîne.
Obtenir les noms de champ est assez simple, voici ce qu'un co-travailleur venu avec:
public static List initFieldArray(String className) throws ClassNotFoundException {
Class c = Class.forName(className);
Field field[] = c.getFields();
List<String> classFields = new ArrayList(field.length);
for (int i = 0; i < field.length; i++) {
String cf = field[i].toString();
classFields.add(cf.substring(cf.lastIndexOf(".") + 1));
}
return classFields;
}
À l'aide d'une usine, j'ai pu réduire la surcharge des performances en stockant les champs de la première fois où les méthodes toString() est appelée. Cependant, de trouver des valeurs qui pourrait être beaucoup plus cher.
En raison de la performance de la réflexion, ce qui peut être plus hypothétique puis pratique. Mais je suis intéressé par l'idée de la réflexion et de la façon dont je peux l'utiliser pour améliorer mon quotidien de programmation.