Java toString() à l'aide de la réflexion?

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.

  • À partir de l'api du jdk "Le résultat doit être concis et informatif mais la représentation qui est facile pour une personne de lire." - une valeur générée automatiquement est un beau rapprochement, mais parfois vous avez juste à mordre la balle et écrire votre propre.
  • Voir aussi Auto-générer de la Méthode toString
  • double possible de java toString pour tout objet
  • cette question est antérieure à cette question en deux ans. Aussi cette question est différente dans le sens où il n'est pas spécifiquement demandant de la réflexion.
  • Correction de la, a raté son point de vue sur la réflexion. Je pense que c'est en fait un double de cette question.