public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
However there is often a problem of testing the Enumeration. I have to get back to my codes to know the violations of using default enum. I believe enum cannot exist as a class and hence you will have to replicate enum across the class that is using it. I chance upon the following clever get-around solution using Java object class.
This is the sample code for Java Enumeration:
class Day{ private final String name; private static int nextOrdinal = 0; private final int ordinal = nextOrdinal++; protected Day(String name){ this.name = name; } public String getName(){ return this.name; } public int getOrdinal(){ return this.ordinal; } //creating your enum public static final Day Mon = new Day("monday"); public static final Day Tue = new Day("tuesday"); public static final Day Wed = new Day("wednesday"); public static final Day Thur = new Day("thursday"); public static final Day Fri = new Day("friday"); public static final Day Sat = new Day("saturday"); public static final Day Sun = new Day("sunday"); //override equals method public boolean equals(Object o){ Day objE = (Day) o; return ( this.ordinal == objE.getOrdinal() ); } }
There are things to take note:
- The use of protected construction to prevent the instantiation of Day class
- Use of final ordinal and static nextOrdinal to issue a unique number for a new Enum. Mon will get ordinal 1, Tue get ordinal 2 and so on....
- Use of overridden equals method as a more efficient way to compare object instead of using String
Hope this helps. Have a nice day ahead!
ps: I have a improved version of Enumeration
No comments:
Post a Comment