Check enum for multiple values

conditional-statements, enums, java

Solution

I ended up writing a method:

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

  // Java < 8
  public boolean in(FileType... fileTypes) {
    for(FileType fileType : fileTypes) {
      if(this == fileType) {
        return true;
      }
    }

    return false;
  }

  // Java 8
  public boolean in(FileType... fileTypes) {
    return Arrays.stream(fileTypes).anyMatch(fileType -> fileType == this);
  }
}

And then:

if(fileType.in(FileType.CSV, FileType.TXT, FileType.FIXED_LENGTH)) {}

Nice and clean!

Problem

I have an enum `FileType` ``` public static enum FileType { CSV, XML, XLS, TXT, FIXED_LENGTH } FileType fileType = FileType.CSV; ``` Is there a better (cleaner) way to check `fileType` for multiple values than the following (like `"myString".matches("a|b|c");`)? ``` if(fileType == FileType.CSV || fileType == FileType.TXT || fileType == FileType.FIXED_LENGTH) {} ```

Original source