У меня есть объект Java obj, который имеет атрибуты obj.attr1, obj.attr2 и т.д. Доступ к атрибутам возможен через дополнительный уровень косвенности: obj.getAttr1(), obj.getAttr2(), если он не является общедоступным.
Задача: мне нужна функция, которая принимает объект, и возвращает Map<String, Object>, где ключи являются строками "attr1", "attr2" и т.д., а значения - соответствующие объекты obj.attr1, obj.attr2.
Я предполагаю, что функция будет вызвана с чем-то вроде
-
toMap(obj), - или
toMap(obj, "attr1", "attr3")(гдеattr1иattr3являются подмножеством атрибутовobj), - или, возможно,
toMap(obj, "getAttr1", "getAttr3")при необходимости.
Я не знаю много о самоанализе Java: как вы это делаете в Java?
Прямо сейчас у меня есть специализированная реализация toMap() для каждого типа объекта, который мне очень нравится, и это слишком много шаблонов.
ПРИМЕЧАНИЕ: для тех, кто знает Python, я хочу что-то вроде obj.__dict__. Или dict((attr, obj.__getattribute__(attr)) for attr in attr_list) для варианта подмножества.