У меня есть объект 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)
для варианта подмножества.