【问题标题】:I need check if enum element is into enum set我需要检查枚举元素是否在枚举集中
【发布时间】:2014-02-13 12:42:06
【问题描述】:

我是java新手。我需要检查枚举元素是否在枚举集中。

在德尔福中:

type
  TWeekEnum = (weMonday, weTuesday, weWednesday, weThursday, weFriday, weSaturday, weSunday)
  TWeekSetEnum = (weSaturday, weSunday)


  if (weSunday in (TWeekSetEnum))
  ...

Java?

【问题讨论】:

标签: java enums


【解决方案1】:

您可以通过这种方式定义enum,然后在其上创建您的子集作为静态方法。

public enum TWeekEnum {
    weMonday, weTuesday, weWednesday, weThursday, weFriday, weSaturday, weSunday;

    public static EnumSet<TWeekEnum> getWeekend() {
        return EnumSet.of(weSaturday, weSunday);
    }

    public static EnumSet<TWeekEnum> getWeekDays() {
        return EnumSet.complementOf(getWeekend());
    }
}

然后你可以像这样检查它是否包含你选择的项目

TWeekEnum.getWeekend().contains(TWeekEnum.weTuesday)

【讨论】:

    【解决方案2】:

    如果您希望元素在 调用代码 中(而不是在枚举中) - 另一种解决方案是添加一个名为 in 的普通方法,如下所示:-

    public enum TWeekEnum {
        weMonday, weTuesday, weWednesday, weThursday, weFriday, weSaturday, weSunday;
    
        public boolean in (TWeekEnum ... weekEnum) {
            return Arrays.asList(types).contains(this);
        }
    
    }
    

    这可以在代码库中的任何地方调用,如下所示:-

    TWeekEnum weekEnum = TWeekEnum.weSaturday;      // <---- If set dynamically, check for null
    if (weekEnum.in(TWeekEnum.weSaturday, TWeekEnum.weSunday)) {
        // do something
    }
    

    ...如果枚举值是静态导入的,这看起来会更好(并且读起来更好),即

    import static com.foo.TWeekEnum.weSaturday;
    import static com.foo.TWeekEnum.weSunday;
    
    ...
    
    if (weekEnum.in(weSaturday, weSunday)) {
        // do something
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多