Abstract superclass for type-safe enums with integer values suitable
for use in
switch
statements.
NOTE:Due to the way in which Java ClassLoaders work, comparing
Enum
objects should always be done using the equals() method,
not
==
. The equals() method will try
==
first so
in most cases the effect is the same.
To use this class, it must be subclassed. For example:
public final class JavaVersionEnum extends ValuedEnum {
//standard enums for version of JVM
public static final int JAVA1_0_VALUE = 100;
public static final int JAVA1_1_VALUE = 110;
public static final int JAVA1_2_VALUE = 120;
public static final int JAVA1_3_VALUE = 130;
public static final JavaVersionEnum JAVA1_0 = new JavaVersionEnum( "Java 1.0", JAVA1_0_VALUE );
public static final JavaVersionEnum JAVA1_1 = new JavaVersionEnum( "Java 1.1", JAVA1_1_VALUE );
public static final JavaVersionEnum JAVA1_2 = new JavaVersionEnum( "Java 1.2", JAVA1_2_VALUE );
public static final JavaVersionEnum JAVA1_3 = new JavaVersionEnum( "Java 1.3", JAVA1_3_VALUE );
private JavaVersionEnum(String name, int value) {
super( name, value );
}
public static JavaVersionEnum getEnum(String javaVersion) {
return (JavaVersionEnum) getEnum(JavaVersionEnum.class, javaVersion);
}
public static JavaVersionEnum getEnum(int javaVersion) {
return (JavaVersionEnum) getEnum(JavaVersionEnum.class, javaVersion);
}
public static Map getEnumMap() {
return getEnumMap(JavaVersionEnum.class);
}
public static List getEnumList() {
return getEnumList(JavaVersionEnum.class);
}
public static Iterator iterator() {
return iterator(JavaVersionEnum.class);
}
}
The above class could then be used as follows:
public void doSomething(JavaVersion ver) {
switch (ver.getValue()) {
case JAVA1_0_VALUE:
// ...
break;
case JAVA1_1_VALUE:
// ...
break;
//...
}
}
As shown, each enum has a name and a value. These can be accessed using
getName
and
getValue
.
The
getEnum
and
iterator
methods are recommended.
Unfortunately, Java restrictions require these to be coded as shown in each subclass.
An alternative choice is to use the
EnumUtils
class.