2011-09-19 13 views
5

Duplicar posible:
How to loop over a Class attributes in Java?iterar sobre atributos de los objetos en Java

class Foo{ 
    int id; 
    String name; 
    int bar; 
    int bar2; 

    //.. 
} 

Foo foo = new Foo(); 

¿Hay una manera de iterar sobre los atributos de este objeto en java? Quiero crear una consulta INSERT y tengo que convertir todos los atributos int en Strings. Es un poco problemático cuando hay más atributos de diferentes tipos.

Gracias!

+0

Esta pregunta no está duplicada, una cosa es recorrer los atributos de CLASS y otra cosa es recorrer los atributos de OBJECT. –

Respuesta

0

Puede usar Java Reflection para hacerlo.

3

Creo que this anterior publicación SO debería ayudarle a hacer lo que necesite.

0

Usted puede obtener todos los campos de la clase Foo llamando getDeclaredFields() en el objeto Foo.class (o foo.getClass(). GetDeclaredFields() si usted tiene la instancia de clase en la mano .

getDeclaredFields() devuelve una matriz de objeto de campo (declarado en el paquete java.lang.reflect).

parece que desea trabajar con el objeto en la base de datos, por lo que podría ser bueno para tomar una Mire la API Java Persistence en lugar de generar instrucciones INSERT manualmente, ya que le proporcionará mucho más y no tendrá que trabajar mucho manualmente en SQL.

3

Si el orden de las propiedades no es un uso relevante Apache Commons BeanUtils:

Foo foo = new Foo(); 
Map<String, Object> fields = (Map<String, Object>) BeanUtils.describe(foo); 

Tenga en cuenta que BeanUtils no utiliza los genéricos, por lo tanto, el reparto.

Nota adicional: sus objetos tienen que cumplir con la especificación JavaBeans para utilizar este enfoque.

Cuestiones relacionadas