I have a Java object obj that has attributes obj.attr1, obj.attr2 etc. The attributes are possibly accessed through an extra level of indirection: obj.getAttr1(), obj.getAttr2(), if not public.
The challenge: I want a function that takes an object, and returns a Map<String, Object>, where the keys are strings "attr1", "attr2" etc. and values are the corresponding objects obj.attr1, obj.attr2.
I imagine the function would be invoked with something like
toMap(obj),- or
toMap(obj, "attr1", "attr3")(whereattr1andattr3are a subset ofobj's attributes), - or perhaps
toMap(obj, "getAttr1", "getAttr3")if necessary.
I don't know much about Java's introspection: how do you do that in Java?
Right now, I have a specialized toMap() implementation for each object type that I care about, and it's too much boilerplate.
NOTE: for those who know Python, I want something like obj.__dict__. Or dict((attr, obj.__getattribute__(attr)) for attr in attr_list) for the subset variant.