java-如何在if else语句中简化此类重复的代码?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何在if else语句中简化此类重复的代码?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1673字,纯文字阅读大概需要3分钟。
内容图文
![java-如何在if else语句中简化此类重复的代码?](/upload/InfoBanner/zyjiaocheng/686/a7f71d11df6d4c349f5f0e8c57569c05.jpg)
这个问题已经在这里有了答案: > Converting many ‘if else’ statements to a cleaner approach 7个
我认为这是Web项目中非常普遍的情况.假设有一个实体,例如:
//JAVA code
@Data
class Entity{
private String a;
private String aExt;
private String b;
private String bExt;
private String c;
private String cExt;
... something more ...
}
出于某种目的,我需要根据传递的参数从Entity中获取部分值,例如:
public ViewObject foo(Entity entity, String condition){
ViewObject vo = new ViewObject();
if("aRelated".equals(condition)){
vo.setValue1(entity.getA());
vo.setValue2(entity.getAExt());
}
else if("bRelated".equals(condition)){
vo.setValue1(entity.getB());
vo.setValue2(entity.getBExt());
}
else if(cRelated".equals(condition)){
vo.setValue1(entity.getC());
vo.setValue2(entity.getCExt());
}
... else statement if there are other values ....
return vo;
}
我知道我可以使用switch-case语句来减少foo()中的某些单词,但是与if-else相比并没有本质上的区别,尤其是当Entity具有多个变量时.
作为一个简单的示例,foo()只是一个视图对象生成器,但是我的项目更加复杂,在每个if-else语句中都有许多重复的代码,但变量名称不同.
如何减少上面重复的代码?
解决方法:
您可以尝试创建两个哈希图:
// name these properly!
HashMap<String, Function<Entity, String>> valueMap = new HashMap<>();
HashMap<String, Function<Entity, String>> extMap = new HashMap<>();
添加以下KVP:
// valueMap
"aRelated" - Entity::getA
"bRelated" - Entity::getB
"cRelated" - Entity::getC
// extMap
"aRelated" - Entity::getAExt
"bRelated" - Entity::getBExt
"cRelated" - Entity::getCExt
现在,您无需使用if语句即可执行此操作:
vo.setValue1(valueMap.get(condition).apply(entity));
vo.setValue2(extMap.get(condition).apply(entity));
内容总结
以上是互联网集市为您收集整理的java-如何在if else语句中简化此类重复的代码?全部内容,希望文章能够帮你解决java-如何在if else语句中简化此类重复的代码?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。