我有一个枚举 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/