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?
Odpowiedz
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.
+1 za zwięzłość. –
bardzo zobowiązany. Dzięki. –
Tak, użyj Reflection API. W szczególności sprawdź metody getFields
i getMethods
od Class
.
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.
Spójrz na ramy refleksji, dzięki którym możesz zajrzeć do klasy w poszukiwaniu tych informacji.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html
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.
- 1. jak można przechodzić przez wiele tablic równolegle?
- 2. Java - zachowanie klasy członków klas ogólnych
- 3. W języku Java, czy można wywołać konstruktor nadklasy klasy macierzystej przez konstruktor klasy potomnej klasy nadrzędnej?
- 4. Czy możesz przechodzić przez wszystkie przyciski opcji?
- 5. Czy można bezpiecznie przechodzić „argumenty” do „apply()”
- 6. domyślna widoczność członków/członków klasy C++
- 7. C++ Czy poprawnie wywoływać "atrybuty" członków klasy?
- 8. Niestandardowe atrybuty dla członków klasy
- 9. Swift - jak przechodzić przez NSDictionary
- 10. Jak mogę przechodzić przez wyliczenie w Javie?
- 11. Jak przechodzić przez obiekt SimpleXML w PHP
- 12. Poleć członków klasy podstawowej z klasy pochodnej
- 13. Rekurencyjnie przechodzić przez NSDictionary o nieznanej strukturze
- 14. Jak przechodzić między wszystkimi właściwościami klasy?
- 15. Potrafię tylko raz przechodzić przez czytnik CSV.
- 16. Dostęp do zmiennych członków klasy w Pythonie?
- 17. Lepiej/Szybciej przechodzić przez zestaw lub listę?
- 18. Jak przechodzić przez wszystkie elementy formularza jQuery
- 19. Jak przechodzić przez niezmienną listę jak forEach?
- 20. Czy można iterować przez JSONArray?
- 21. vb.net jak przechodzić przez listę katalogów?
- 22. Jak mogę przechodzić przez wszystkie trasy?
- 23. Python: Jak przechodzić przez bloki linii
- 24. Jak przechodzić przez relacje modelu w laravel ze składnią kropkową
- 25. Iteracja przez nieparzystych członków kolekcji w Scali
- 26. Czy można uzyskać nazwy i wartości członków enum w D?
- 27. Prześmiewanie zmiennych członków klasy przy użyciu Mockito
- 28. Nierozwiązane symbol zewnętrzny na statycznych członków klasy
- 29. Jak przechodzić przez JSON z SwiftyJSON?
- 30. Czy można użyć std :: enable_if, aby wybrać specjalizację szablonów członków?
Co to jest "DTO"? – CodyBugstein
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. –
W gruncie rzeczy jestem :) Co to jest 3,5 roku w większym schemacie rzeczy w ponadczasowej cyberprzestrzeni? Dzięki za odpowiedź. – CodyBugstein