Question

J'ai un DTO qui compte de nombreux membres. Je me demandais si Java supportait l'idée d'un for (in) pour la classe. Je ne pense pas que ce soit le cas, mais cela me ferait économiser une tonne de chagrin, alors je me suis dit que je lancerais la question là-bas.

Était-ce utile?

La solution

Eh bien, vous pouvez le faire par réflexion:

for (Field field : clazz.getFields())
{
    ...
}

(Ou l'équivalent pour les méthodes, etc.)

Vous pouvez ensuite obtenir les valeurs de champ pour une instance spécifique ou des valeurs statiques.

Autres conseils

C'est le cas, mais c'est un peu compliqué.

Vous devez utiliser la réflexion.

Voir: Class.getDeclaredFieds ()

  

Retourne un tableau d'objets Field reflétant tous les champs déclarés par la classe ou l'interface représentée par cet objet Class

Vous pouvez voir un exemple ici .

  

Il existe trois manières d'obtenir un objet Field à partir d'un objet Class.

 Class cls = java.awt.Point.class;

 // By obtaining a list of all declared fields.
 Field[] fields = cls.getDeclaredFields();

 // By obtaining a list of all public fields, 
 // both declared and inherited.
 fields = cls.getFields();
 for (int i=0; i<fields.length; i++) {
   Class type = fields[i].getType();
   process(fields[i]);
 }

 // By obtaining a particular Field object.
 // This example retrieves java.awt.Point.x.
 try {
   Field field = cls.getField("x");
   process(field);
   } catch (NoSuchFieldException e) {
 }

Voir la Classe . définition pour plus d'options.

Oui, utilisez la API Reflection En particulier, vérifiez les méthodes getFields et getMethods dans Classe .

Vous pouvez utiliser la réflexion pour obtenir tous les membres et toutes les fonctions.

Peut-être devriez-vous vous demander pourquoi ce DTO compte autant de membres que vous pensez que cela est nécessaire. Peut-être le temps de refactoriser.

Examinez le cadre de réflexion dans lequel vous pouvez introspecter la classe pour cette information.

http: / /java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top