• && 操作符 使用注意——警示!!


    理论都知道,运用中,会无意犯规:

    (左表达式) && (右表达式) : 操作符,只有在 左表达式为 true 的情况下,才会执行 后面的 右表达式。

    错误的写法:【您能发现么】

     1         boolean flag = true;
     2         for(ConditionBO subjectCondition : subjectConditions){
     3             Integer relationTableFieldId = subjectCondition.getRelationTableFieldId();
     4             Integer relationId = publicDataUtil.getRelationIdByRelationFieldId(relationTableFieldId);
     5             Map<Integer, Boolean> dataFlagMap = relationDataFlagMapMapTemp.get(relationId);
     6             if(CollectionUtils.isEmpty(dataFlagMap)){
     7                 dataFlagMap = new HashMap<>();
     8                 relationDataFlagMapMapTemp.put(relationId, dataFlagMap);
     9             }
    10 
    11             List<Map<String, String>> bussDataList = relationBussDataMapListMap.get(relationId);
    12             List<Map<String, String>> ruleSuccessBussDataMapList = ruleSuccessBussDataMapListMapTemp.get(relationId);
    13             if(CollectionUtils.isEmpty(ruleSuccessBussDataMapList)) {
    14                 ruleSuccessBussDataMapList = new ArrayList<>();
    15                 ruleSuccessBussDataMapListMapTemp.put(relationId, ruleSuccessBussDataMapList);
    16             }
    17             flag = flag && this.judgeValues(flag, ruleSuccessBussDataMapList, dataFlagMap, bussDataList, subjectCondition); // 标记数据是否使用
    18 //            if(!flag)break;
    19         }

    正确的写法:

     1         boolean flag = true;
     2         for(ConditionBO subjectCondition : subjectConditions){
     3             Integer relationTableFieldId = subjectCondition.getRelationTableFieldId();
     4             Integer relationId = publicDataUtil.getRelationIdByRelationFieldId(relationTableFieldId);
     5             Map<Integer, Boolean> dataFlagMap = relationDataFlagMapMapTemp.get(relationId);
     6             if(CollectionUtils.isEmpty(dataFlagMap)){
     7                 dataFlagMap = new HashMap<>();
     8                 relationDataFlagMapMapTemp.put(relationId, dataFlagMap);
     9             }
    10 
    11             List<Map<String, String>> bussDataList = relationBussDataMapListMap.get(relationId);
    12             List<Map<String, String>> ruleSuccessBussDataMapList = ruleSuccessBussDataMapListMapTemp.get(relationId);
    13             if(CollectionUtils.isEmpty(ruleSuccessBussDataMapList)) {
    14                 ruleSuccessBussDataMapList = new ArrayList<>();
    15                 ruleSuccessBussDataMapListMapTemp.put(relationId, ruleSuccessBussDataMapList);
    16             }
    17             boolean innerFlag = this.judgeValues(flag, ruleSuccessBussDataMapList, dataFlagMap, bussDataList, subjectCondition); // 标记数据是否使用
    18             flag = flag && innerFlag;
    19             if(!flag)break;
    20         }

    后续再完善!

  • 相关阅读:
    MySQL No Install zip安装方法
    xaml中绑定单例属性
    wpf 绑定ObservableCollection 的Count属性
    ItemsControl 使用Grid布局
    C# 读取oracle 中文乱码的解决方案
    wpf datagrid 行双击事件
    wpf鼠标捕获与控件交互——UIElement.CaptureMouse
    Mysql备份还原
    删除_desktop.ini病毒文件
    揭露【誉思云】打码软件的诈骗骗局!誉思云是骗人的,不要再浪费钱财!
  • 原文地址:https://www.cnblogs.com/bridgestone29-08/p/14537700.html
Copyright © 2020-2023  润新知