qijinglai
Qi T
2017-08-09 03:23
采纳率: 0%
浏览 3.1k

大量的if,如何优化代码

bean里大量的相同的字段,每个字段都有isChecked和content属性,所以需要每一个都判断一遍是否选中,选中再显示内容
稍微举下例子

 public class FittingsInfo {
    private Field companyCn;//中文公司名
    private Field companyEn;//英文公司名
    private Field tel;//电话
    private Field orderNum;//订单号
        ...
        ...
        }
public class Field {
    private boolean isChecked;
    private String content;
        ...
        ...

setter getter constructor都省略了
然后


        if (fittingsInfo.getCompanyCn().isChecked()) {
           ...
        }
        if (fittingsInfo.getCompanEn().isChecked()) {
           ...
        }

里面逻辑全一样,少说得有三十多个字段,就一个判断几百行出去了....有没有什么办法简化代码呢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Runner__1
    T_world 2017-08-09 03:39

    我的想法是可以在FittingsInfo类里准备一个boolean类型的数组,写一个方法填充这个数组,数组的每个元素代表一个字段,然后将这个数组返回出去,然后判断的时候就可以用循环了,当然前提是字段的顺序一定要和数组对应好

    点赞 评论
  • w19930104q
    唯灬独尊 2017-08-09 03:54

    写一个循环,然后把元素都放在集合中,之后循环调用

    点赞 评论
  • orangeTop
    orangeTop 2017-08-09 06:26

    我之前也碰到过类似的,我是在bean里面实现if判断,调用的字段。
    1.在FittingsInfo里面写一个方法
    public Field getInfo(int n){
    if(n == 1){return getCompanyCn(); }
    if(n == 2){return getCompanEn(); }
    ...
    }
    这个get方法有点繁琐了
    但是当你调用get方法时,直接循环:
    for(int i = 0; i<字段总数; i++){
    if( fittingsInfo.getInfo(i).isChecked() ){
    //你的逻辑
    }
    }

    仅供参考,希望你有更好的解决方法告知我,嘿嘿
    
    点赞 评论
  • orangeTop
    orangeTop 2017-08-11 01:39

    但是一个问题就是,如果你的bean是mybatis自动生成的那种,你下次如果向这个bean添加新的字段 ,再次使用自动生成会清楚你写的方法。不知道你现在找到更好的方法没

    点赞 评论

相关推荐