根据上面的代码,可以对下面的代码进行如下修改:

page.convert(bo -> {
    PolicyVO vo = new PolicyVO();
    String json = JsonUtils.toJson(bo);
    json = json.replace('\\', '').replace('"[', '[').replace(']"', ']');
    try {
        Map<String, Object> mapDeeply = JacksonUtils.toMapDeeply(json);
        switch (serviceType){
            case 'hdfs':
                vo = JacksonUtils.mapToBean(mapDeeply, HdfsPolicyVO.class); // 修改为HdfsPolicyVO类
                break;
            case 'hive':
                vo = JacksonUtils.mapToBean(mapDeeply, HivePolicyVO.class); // 修改为HivePolicyVO类
                break;
            case 'yarn':
                vo = JacksonUtils.mapToBean(mapDeeply, YarnPolicyVO.class); // 修改为YarnPolicyVO类
                break;
            default:
                throw new IllegalArgumentException('Invalid serviceType: ' + serviceType); // 如果serviceType不符合预期值,抛出异常
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return vo;
});

修改说明:

  • 使用不同的子类: 根据 serviceType 的值,使用不同的子类 HdfsPolicyVOHivePolicyVOYarnPolicyVO 来映射数据,提高代码可读性和可维护性。
  • 添加默认情况处理: 如果 serviceType 不符合预期值,抛出 IllegalArgumentException,避免程序异常。
  • 使用单引号: 将双引号改为单引号,提高代码可读性。

优化建议:

  • 使用泛型: 可以使用泛型来简化代码,避免重复代码。
  • 使用枚举: 可以使用枚举来定义 serviceType 的值,提高代码可读性和可维护性。
  • 使用工厂模式: 可以使用工厂模式来创建不同的 PolicyVO 子类,提高代码可扩展性。

原文地址: https://www.cveoy.top/t/topic/qxT3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录