Implementing the C enum Keyword

Question:
I’m porting my C code to Java and would like to know how I would implement the C enum keyword to Java.

Answer:
There is no convenient mechanism for enum in Java. You just list the constants one by one, and you must attach values to them. You also must find a “home” for them, some class to which the constants conceptually belong.

For example,

        enum Weekday { MON, TUE, WED, THU, FRI, SAT, SUN }; // C        

might turn into

       class Day // Java       {       public static int MON = 0;               public static int TUE = 1;               public static int WED = 2;               public static int THU = 3;               public static int FRI = 4;               public static int SAT = 5;               public static int SUN = 6;               // . . .       }        

Note that this does not introduce a special type. A variable that canhold weekdays must be defined as an int.

Contrast that with C, where you can define a variable of type Weekday:

        enum Weekday w;        

Actually, in C, this is just window-dressing. An enumeration is just aninteger in C. But in C++, enumerated types really are distinct types.

On the positive side, names are inside the scope of that class. Forexample, Sunday is

        int w = Day.SUN; // Java        

(This is completely analogous to enumerations defined inside classes inC++.) This is a good thing because it saves you from embarrassingmultiple definitions of enumeration constants, like

        enum Test { GRE, GMAT, SAT };        enum Vendor { DEC, HP, SUN };    
Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: