2009-10-30 16 views
8

Mam DTO, który ma całą grupę członków. Zastanawiam się, czy Java obsługuje ideę for (in) dla klasy. Nie sądzę, żeby tak było, ale oszczędziłoby mi to mnóstwo żalu, gdyby tak się stało, więc pomyślałem, że podrzucę to pytanie.Czy można przechodzić przez klasy członków w java?

+0

Co to jest "DTO"? – CodyBugstein

+1

Pytasz o to na pytanie, na które odpowiedziano 3,5 lat temu ?! DTO to obiekt używany do reprezentowania zbioru danych, zwykle związanego z kolejną tabelą db. Używałem tu ze Spring. Zakładam, że jest używany w większości sytuacji JDBC. –

+0

W gruncie rzeczy jestem :) Co to jest 3,5 roku w większym schemacie rzeczy w ponadczasowej cyberprzestrzeni? Dzięki za odpowiedź. – CodyBugstein

Odpowiedz

26

Cóż, można zrobić to z refleksji:

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

(lub ekwiwalent dla metod etc.)

Następnie można uzyskać wartości pola dla określonej instancji lub wartości statycznych.

+0

+1 za zwięzłość. –

+0

bardzo zobowiązany. Dzięki. –

0

Możesz użyć odbicia, aby uzyskać wszystkie elementy i funkcje.

Może musisz zadać sobie pytanie, dlaczego DTO ma tylu członków, że uważasz, że jest to konieczne. Może być czas na refaktor.

7

Czyni to trochę kłopotów chociaż.

Musisz użyć odbicia.

Patrz: Class.getDeclaredFieds()

Zwraca tablicę obiektów terenowych odzwierciedlających wszystkie pola zadeklarowane przez klasę lub interfejs reprezentowanego przez ten obiekt klasy

można zobaczyć przykład here

Istnieją trzy sposoby uzyskania pola obiekt z obiektu klasy.

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

Zobacz definicję Class klasy po więcej informacji.

Powiązane problemy