java - 多个 If 语句减少
问题描述
我正在寻找一些帮助来清理下面的代码并减少行数。如果get返回null,有没有办法不设置任何东西?
if (map.get("cpn_rate") != null) {
collateral.setCoupon(new BigDecimal(map.get("cpn_rate")));
}
if (map.get("Price") != null) {
collateral.setPrice(new BigDecimal(map.get("Price")));
}
if (map.get("Par") != null) {
collateral.setPar(new BigDecimal(map.get("Par")));
}
if (map.get("mkt_val") != null) {
collateral.setMarketValue(new BigDecimal(map.get("mkt_val")));
}
if (map.get("Accrued Intr") != null) {
collateral.setAccurInterest(new BigDecimal(map.get("Accrued Intr")));
}
if (map.get("Total Market Value") != null) {
collateral.setTotMktValue(new BigDecimal(map.get("Total Market Value")));
}
解决方案
对“我能让这个更简洁/简洁”这一公开问题的简单答案是“不”。在使这个更简洁或简洁的过程中,你不会真正得到你想要的东西,也不会computeIfPresent
真正给你想要的东西并保持你的代码可读。
问题是,当您从地图中检索密钥时,您将其放在collateral
实例中的不同字段中。这意味着诸如在地图上循环之类的琐碎解决方案将无法满足,因为如果不深入思考,您将无法获得需要映射到的确切字段。
您在这里拥有的代码虽然很冗长,但对于任何其他维护人员来说都是完全可读和合理的,以了解正在发生的事情。我认为没有改变它的动机。
推荐阅读
- python - 从 3d 曲面图中获取 2d 等高线图
- python - Python - 如何以编程方式添加属性访问器
- python - 在python中有条件地更改类实例属性
- sql - 在 postgresql 中删除重复的行
- javascript - 在单击时重新插入的元素上使用Parents()
- javascript - 聊天系统的滚动条一直自动向下滚动
- reactjs - 如何使用 Context 传递 useReducer 状态?- 反应原生
- java - 有没有办法设置下拉高度的限制?或者甚至对下拉列表中显示的项目设置限制?
- perl - 在 Template Toolkit 中按值而不是键对哈希引用进行排序
- c++ - 在应用程序终止时关闭 COM 端口