我正在寻找一些帮助清理下面的代码并减少行数。如果 get 返回空值,有没有办法不设置任何内容?
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")));
}
Run Code Online (Sandbox Code Playgroud)
对“我能让这个更简洁/更简洁”这个公开问题的简单答案是“不”。你不会真正得到你正在寻找的东西来使这个更简洁或更简洁,也不会computeIfPresent真正给你你正在寻找的东西并保持你的代码可读。
问题是,当您从地图中检索密钥时,您将它放在collateral实例中的不同字段中。这意味着诸如遍历地图之类的琐碎解决方案将无法满足,因为您将无法在不深入反射的情况下获得需要映射到的确切字段。
您这里的代码虽然冗长,但对于任何其他维护者来说都是完全可读且合理的,可以理解正在发生的事情。我看不到改变它的动力。
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |