Java 自省:对象到映射
2022-09-01 00:13:44
我有一个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)