Java 代码优化:根据服务类型动态映射 PolicyVO 子类
根据上面的代码,可以对下面的代码进行如下修改:
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的值,使用不同的子类HdfsPolicyVO、HivePolicyVO、YarnPolicyVO来映射数据,提高代码可读性和可维护性。 - 添加默认情况处理: 如果
serviceType不符合预期值,抛出IllegalArgumentException,避免程序异常。 - 使用单引号: 将双引号改为单引号,提高代码可读性。
优化建议:
- 使用泛型: 可以使用泛型来简化代码,避免重复代码。
- 使用枚举: 可以使用枚举来定义
serviceType的值,提高代码可读性和可维护性。 - 使用工厂模式: 可以使用工厂模式来创建不同的
PolicyVO子类,提高代码可扩展性。
原文地址: https://www.cveoy.top/t/topic/qxT3 著作权归作者所有。请勿转载和采集!