Tengo un objeto Java obj
que tiene atributos obj.attr1
, obj.attr2
etc. Los atributos son posiblemente acceder a través de un nivel extra de indirección: obj.getAttr1()
, obj.getAttr2()
, si no pública.Java introspección: objeto al mapa
El reto: Quiero una función que toma un objeto y devuelve un Map<String, Object>
, donde las claves son cadenas "attr1"
, etc. "attr2"
y los valores son los objetos correspondientes obj.attr1
, obj.attr2
. me imagino la función se invoca con algo como
toMap(obj)
,- o
toMap(obj, "attr1", "attr3")
(dondeattr1
attr3
y son un subconjunto deobj
's atributos), - o tal vez
toMap(obj, "getAttr1", "getAttr3")
si es necesario.
No sé mucho acerca de la introspección de Java: ¿cómo se hace eso en Java?
En este momento, tengo una implementación especializada toMap()
para cada tipo de objeto que me importa, y es demasiado repetitivo.
NOTA: para aquellos que conocen Python, quiero algo así como obj.__dict__
. O dict((attr, obj.__getattribute__(attr)) for attr in attr_list)
para la variante de subconjunto.
¿Tiene que ser recursivo? – biziclop
@biziclop: no, no recursión – Radim