Tengo un DTO que tiene un montón de miembros. Me preguntaba si Java apoya la idea de un for (in) para la clase. No creo que lo haga, pero me ahorraría un montón de dolor si lo hiciera, así que pensé en arrojar la pregunta por ahí.¿Es posible recorrer los miembros de una clase en java?
Respuesta
Bueno, puede hacerlo con la reflexión:
for (Field field : clazz.getFields())
{
...
}
(O el equivalente para los métodos etc.)
A continuación, puede obtener los valores de los campos para una instancia específica, o valores estáticos.
+1 por concisión. –
muy obligado. Gracias. –
Sí, utilice el Reflection API. Particularmente, verifique los métodos getFields
y getMethods
de Class
.
Puede usar la reflexión para obtener todos los miembros y funciones.
Quizás deba preguntarse por qué ese DTO tiene tantos miembros que cree que es necesario. Podría ser hora de refactorizar.
Eche un vistazo al marco de reflexión mediante el cual puede introspectar la clase para obtener esta información.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html
lo hace, es un poco de molestia sin embargo.
Tienes que usar la reflexión.
Devuelve una matriz de objetos de campo que reflejan todos los campos declarados por la clase o interfaz que representa este objeto Class
Se puede ver un ejemplo here
Hay tres formas de obtener un campo objeto de un objeto de Clase.
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) {
}
Véase la definición de clase Class para más opciones.
- 1. ¿Es posible recorrer un objeto Clase C#?
- 2. ¿Es posible recuperar todos los miembros, incluido el privado, de una clase en Java mediante reflexión?
- 3. ¿Es posible tener miembros de clase "solo de implementación"?
- 4. Niveles de acceso de los miembros de la clase java
- 5. ¿Es posible obtener los nombres y valores de los miembros de una enumeración en D?
- 6. ¿Es posible extender una clase sin constructores en Java?
- 7. C/C++ ¿Es posible obtener una "lista" de miembros de instancia al consultar una clase?
- 8. Lista dinámicamente todos los miembros de una clase
- 9. ¿Es posible ejecutar FindBugs contra una sola clase de Java?
- 10. ¿Los miembros de la clase ocupan memoria?
- 11. ¿Los miembros estáticos de una clase genérica son diferentes para diferentes tipos en Java?
- 12. Los decoradores de Python en los miembros de la clase fallan cuando el mecanismo decorador es una clase
- 13. ¿Es posible cambiar la instancia de clase externa de una clase interna en Java?
- 14. En Java, ¿es una mala idea hacer públicos los miembros de un objeto?
- 15. ¿Cómo acceder a los miembros estáticos de una clase?
- 16. En Java, ¿los miembros de la clase estáticos están compartidos entre los programas?
- 17. ¿Cuál es una mejor manera de anular los miembros de clase anidados en Python?
- 18. Cómo recorrer todas las propiedades en una clase
- 19. ¿Cómo serializar los miembros de datos estáticos de una clase de Java?
- 20. Bloqueo de miembros estáticos de una clase
- 21. ¿Es posible agregar atributos a los miembros generados de una instancia de ExpandoObject?
- 22. Miembros estáticos de una clase de instancia
- 23. Servidor SQL: ¿es posible recorrer un procedimiento almacenado?
- 24. ¿Cómo ocultar miembros privados de una clase?
- 25. ¿Es posible definir miembro en una clase secundaria sin definirlo en la clase principal abstracta? C#
- 26. Comprueba si una clase es una subclase de otra clase en Java
- 27. ¿Cómo alinear los nombres de los miembros de la clase C++ en una columna en emacs?
- 28. Miembros de clase ambiguos en vb.net
- 29. Acceso a miembros protegidos en una clase derivada
- 30. ¿Es posible serializar y deserializar una clase en C++?
¿Qué es un 'DTO'? – CodyBugstein
¿Estás preguntando esto sobre una pregunta que fue respondida hace 3.5 años? Un DTO es un objeto utilizado para representar un conjunto de datos, generalmente asociado con un corolario de tabla de db. Estaba usando aquí con Spring. Supongo que se usa en la mayoría de las situaciones JDBC. –
De hecho, soy :) ¿Qué es 3.5 años en el esquema más grande de las cosas en el ciberespacio atemporal? Gracias por tu respuesta. – CodyBugstein