logo

Programming Languages - enum

C++

According to Google C++ Style Guide, enumerators should be named like constants (like kOutOfMemory) instead of macros (OUT_OF_MEMORY ) to avoid conflicts.

enum class Color {
  kRed = 0,
  kBlue,
  kOrange,
};

Java

enum DayOfWeek {
  SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

Java's enum is more like a class, it can have constructor and methods:

class Test {
  enum DayOfWeek {
    SUNDAY(0), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6);

    private final int num;

    // constructor
    DayOfWeek(int num) {
      this.num = num;
    }

    // method
    public boolean isWeekDay() {
      return this != SUNDAY && this != SATURDAY;
      // or: return num >= 1 && num <= 5;
    }
  }

  public static void main(String[] args) {
    System.out.println(DayOfWeek.FRIDAY.isWeekDay()); // => true
    System.out.println(DayOfWeek.SUNDAY.isWeekDay()); // => false
  }
}

ProtoBuf

enum Corpus {
  UNIVERSAL = 0;
  WEB = 1;
  IMAGES = 2;
  LOCAL = 3;
  NEWS = 4;
  PRODUCTS = 5;
  VIDEO = 6;
}