java - 检查多个值的枚举

标签 java enums conditional-statements

我有一个枚举 FileType

public static enum FileType {
  CSV, XML, XLS, TXT, FIXED_LENGTH
}

FileType fileType = FileType.CSV;

是否有比以下方法(如 "myString".matches("a|b|c");)?

if(fileType == FileType.CSV || fileType == FileType.TXT || fileType == FileType.FIXED_LENGTH) {}

最佳答案

选项 1:向您的枚举添加一个 boolean 字段。

public static enum FileType {
    CSV(true), XML(false), XLS(false), TXT(true), FIXED_LENGTH(true);

    private final boolean interesting;

    FileType(boolean interesting) {
        this.interesting = interesting;
    }
    public boolean isInteresting() {
        return this.interesting;
    }
}

...

if (fileType!=null && fileType.isInteresting()) {
    ...
}

选项 2:使用 EnumSet . EnumSets 在底层使用位域,因此它们非常快且占用内存少。

Set<FileType> interestingFileTypes = EnumSet.of(FileType.CSV, FileType.TXT, FileType.FIXED_LENGTH);
...
if (interestingFileTypes.contains(fileType)) {
   ...
}

选项 3:使用 switch,如 kocko 所建议的

关于java - 检查多个值的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27172882/

相关文章:

java - 表示可以放大和缩小的 2D map /网格的良好数据结构?

java - 如何通过 Jenkins 中的 Shell 脚本运行 TestNG.xml?

postgresql - R2DBC 和枚举 (PostgreSQL)

excel - 将列中的范围与另一列中的条件相加

java - 从 java.lang.reflect.Method 对象获取方法引用

c# - 如何在 C# 中优化枚举赋值

c# - 在 C# 中创建以枚举为键的静态只读字典

html - 移动设备的条件 CSS 高度

filter - Tableau - 如何使用条件来筛选周(日期)

java - 配置activemq的授权