当前位置:   article > 正文

Java 中switch case 枚举值使用报错:case expressions must be constant expressions_case中使用枚举报case expressions must be constant expres

case中使用枚举报case expressions must be constant expressions

1. 工作中碰到的问题

    Java switch case 和枚举类型Enum对象进行联合使用,发现Eclipse中异常提示信息:case expressions must be constant expressions,导致编译失败。


枚举类型定义

  1. public enum FreqCappingType
  2. {
  3. MediaBuy(1), Campaign(2),SellStrategy(3),SellCampaign(4);
  4. private int val;
  5. FreqCappingType(int val)
  6. {
  7. this.val = val;
  8. }
  9. public int getVal()
  10. {
  11. return val;
  12. }
  13. public static FreqCappingType convertFrom(int val)
  14. {
  15. switch (val)
  16. {
  17. case 1:
  18. return MediaBuy;
  19. case 2:
  20. return Campaign;
  21. case 3:
  22. return SellStrategy;
  23. case 4:
  24. return SellCampaign;
  25. }
  26. return null;
  27. }
  28. }


2. 解决方法

    
  1.   switch (FreqCappingType.convertFrom(capRecord.getType())) {
  2.   case MediaBuy:
  3.   if (!buyStrategyMap.containsKey(capRecord.getId())) {
  4.      capRecords.remove(capRecord);
  5.      i--;
  6.      continue;
  7.      }
  8. break;
  9.  case Campaign:

3. 分析

 

       由于 FreqCappingType.MediaBuy.getVal() 返回值是不确定的值,不符合Java switch case的语法必须为常量,导致报错。


红色标记MediaBuy不要写为FreqCappingType.MediaBuy(否则,继续报错The qualified case label FreqCappingType.MediaBuymust be replaced with the unqualified enum constant MediaBuy)



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/729066
推荐阅读
相关标签
  

闽ICP备14008679号