Frage

Ich habe ein DTO, die eine ganze Reihe von Mitgliedern. Ich frage mich, ob Java die Idee eines für (in) für die Klasse unterstützt. Ich glaube nicht, es funktioniert, aber es würde mir eine Menge Ärger ersparen, wenn es tut, so, ich dachte, ich die Frage werfen würde da draußen.

War es hilfreich?

Lösung

Nun, man kann es mit Reflexion tun:

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

(oder das Äquivalent für Methoden etc.)

Sie können dann die Feldwerte für eine bestimmte Instanz erhalten, oder statische Werte.

Andere Tipps

Es tut, ist es ein wenig Aufwand aber.

Sie haben Reflexion zu verwenden.

Siehe auch: Class.getDeclaredFieds ()

  

Gibt ein Array von Feldobjekten reflektiert alle Felder von der Klasse oder Schnittstelle dieses Klasse-Objekt dargestellt wird erklärt

Sie können ein Beispiel finden Sie unter hier

  

Es gibt drei Möglichkeiten, ein Field-Objekt aus einem Klasse-Objekt zu erhalten.

 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) {
 }

Sehen Sie die Klasse Klasse Definition für weitere Optionen.

Ja, verwenden Sie das Reflection-API . Insbesondere überprüfen Sie die getFields und getMethods Methoden von Class .

Sie können mit Reflexion alle Mitglieder und Funktionen erhalten.

Vielleicht muss man sich fragen, warum das DTO so viele Mitglieder hat, die Sie denken, dies ist notwendig. Könnte Zeit sein Refactoring.

Werfen Sie einen Blick auf das Spiegelrahmen, wobei Sie die Klasse für diese Informationen introspect kann.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top