Ho un DTO che ha un sacco di membri. Mi stavo chiedendo se Java supporta l'idea di un for (in) per la classe. Non penso che lo faccia, ma mi farebbe risparmiare un sacco di dolore se fosse così, ho pensato di buttare la domanda là fuori.È possibile eseguire il ciclo di un membro di classi in java?
risposta
Beh, si può fare con la riflessione:
for (Field field : clazz.getFields())
{
...
}
(o l'equivalente per i metodi, ecc)
È possibile quindi ottenere i valori di campo per un'istanza specifica, o valori statici.
+1 per concisione. –
molto obbligato. Grazie. –
Sì, utilizzare Reflection API. In particolare, controllare i metodi getFields
e getMethods
da Class
.
È possibile utilizzare la riflessione per ottenere tutti i membri e le funzioni.
Forse è necessario chiedersi perché questo DTO ha così tanti membri che pensi sia necessario. Potrebbe essere il momento di refactoring.
Dai uno sguardo al quadro di riflessione in base al quale puoi introspettare la classe per queste informazioni.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html
lo fa, è un po 'di fastidio però.
È necessario utilizzare la riflessione.
Restituisce un array di oggetti di campo che riflettono tutti i campi dichiarati dalla classe o interfaccia rappresentata da questo oggetto Class
È possibile vedere un esempio here
Ci sono tre modi per ottenere un campo oggetto da un oggetto di classe.
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) {
}
Vedi la definizione Class classe per più opzioni.
Che cos'è un 'DTO'? – CodyBugstein
Stai chiedendo questo a una domanda a cui hanno risposto 3,5 anni fa ?! Un DTO è un oggetto utilizzato per rappresentare un set di dati, in genere associato a una tabella di db corollario. Stavo usando qui con Spring. Presumo che sia usato nella maggior parte delle situazioni JDBC. –
In effetti sono :) Che cosa sono 3,5 anni nel più ampio schema di cose nel cyberspazio senza tempo? Grazie per la tua risposta. – CodyBugstein