gpt4 book ai didi

Java自省(introspection): object to map

转载 作者:IT老高 更新时间:2023-10-28 20:48:41 26 4
gpt4 key购买 nike

我有一个 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") (其中 attr1attr3obj 属性的子集),
  • 或者也许 toMap(obj, "getAttr1", "getAttr3")如有必要。

我对 Java 的内省(introspection)知之甚少:你是如何在 Java 中做到这一点的?

现在,我有一个专门的 toMap()我关心的每种对象类型的实现,它的样板太多了。


注意:对于那些了解 Python 的人,我想要 obj.__dict__ 之类的东西.或 dict((attr, obj.__getattribute__(attr)) for attr in attr_list)对于子集变体。

最佳答案

用户的另一种方式JacksonObjectMapperconvertValue 例如:

 ObjectMapper m = new ObjectMapper();
Map<String,Object> mappedObject = m.convertValue(myObject, new TypeReference<Map<String, String>>() {});

关于Java自省(introspection): object to map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com