当前位置: 首页 > 面试题库 >

产生地图 来自POJO

翟俊哲
2023-03-14
问题内容

我有一个POJO和一个(当前尚未构建)的类,它将返回它的列表。我想自动生成将POJO作为地图进行访问所需的代码。这是一个好主意吗,是否可以自动执行,并且我需要为要处理的每个POJO手动执行此操作吗?

谢谢,安迪


问题答案:

您可以为此使用Commons BeanUtils
BeanMap

Map map = new BeanMap(someBean);

更新
:由于由于Android中某些明显的库依赖问题而导致该选项不可行,因此这是一个基本的启动示例,您几乎不需要反射API就能做到这一点:

public static Map<String, Object> mapProperties(Object bean) throws Exception {
    Map<String, Object> properties = new HashMap<>();
    for (Method method : bean.getClass().getDeclaredMethods()) {
        if (Modifier.isPublic(method.getModifiers())
            && method.getParameterTypes().length == 0
            && method.getReturnType() != void.class
            && method.getName().matches("^(get|is).+")
        ) {
            String name = method.getName().replaceAll("^(get|is)", "");
            name = Character.toLowerCase(name.charAt(0)) + (name.length() > 1 ? name.substring(1) : "");
            Object value = method.invoke(bean);
            properties.put(name, value);
        }
    }
    return properties;
}

如果可以使用java.beansAPI,则可以执行以下操作:

public static Map<String, Object> mapProperties(Object bean) throws Exception {
    Map<String, Object> properties = new HashMap<>();
    for (PropertyDescriptor property : Introspector.getBeanInfo(bean.getClass()).getPropertyDescriptors()) {
        String name = property.getName();
        Object value = property.getReadMethod().invoke(bean);
        properties.put(name, value);
    }
    return properties;
}


 类似资料:
  • 以下是我所拥有的: > sql表/csv文件,具有“tile xyz”坐标(web mercator tile坐标)和“data/color” 我想要的是: PNG瓷砖 基础数据不应访问 借助传单/Google maps API将png瓷砖显示为网页地图 问题/疑问: 数据太多,无法在此之前生成全球所有瓷砖(需要几天时间) 因此,我考虑了一个动态缓存/平铺创建算法(也许以前创建ZoomLevel0

  • 趁着我还有记忆写个面经……是做行为分析的组 HR面:半小时+ 了解基本情况和对自动驾驶的了解 一面:一小时 询问对自动驾驶的了解 介绍简历上的项目 场景题,某个具体场景下设计决策逻辑 二面:一小时 介绍简历项目,问了一些项目的实现细节 也是场景题,比一面问的仔细一些 最后问了一些简单的数学基础,很多基础知识一时半会儿真想不起来……😭😭😭 三面:两小时 传说中的NY面……原来产品也得他面啊……

  • 高德地图使用的原生,突然之间加载不出来是为什么?做了一下marker标记,然后就加载不出来,回退代码之后还是加载不出来。有做过原生高德地图的朋友吗?麻烦指导一下,谢谢。我要的效果很简单,就是在地图上标记设备位置,然后在标记上绑定一个点击事件,点击获取在线设备的状态。 另外有做过物联网的哥们吗?就是这个获取设备状态信息是服务端做还是前端做的?

  • 我正在将Bostock的美国地图集(未过滤的美国各州shp文件)中的地图文件转换为topojson。最后我得到了这张地图。有人知道为什么吗? 我的投影代码:var svg=d3.select("#交互式")。插入("svg")。attr("宽度",w)。attr("高度",h); 我尝试过的原始文件(做同样的事情):12,转换文件:12,

  • 我试图从Spring Boot配置注入映射列表,但得到一个空列表。如何正确注入?