Class ValuedEnum
- java.lang.Object
-
- org.apache.commons.lang.enums.Enum
-
- org.apache.commons.lang.enums.ValuedEnum
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Comparable
public abstract class ValuedEnum extends Enum
Abstract superclass for type-safe enums with integer values suitable for use in
switchstatements.NOTE:Due to the way in which Java ClassLoaders work, comparing
Enumobjects 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); } }NOTE:These are declared
final, so compilers may inline the code. Ensure you recompile everything when using final.The above class could then be used as follows:
public void doSomething(JavaVersionEnum 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
getNameandgetValue.NOTE: Because the switch is ultimately sitting on top of an int, the example above is not type-safe. That is, there is nothing that checks that JAVA1_0_VALUE is a legal constant for JavaVersionEnum.
The
getEnumanditeratormethods are recommended. Unfortunately, Java restrictions require these to be coded as shown in each subclass. An alternative choice is to use theEnumUtilsclass.- Since:
- 2.1 (class existed in enum package from v1.0)
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intcompareTo(java.lang.Object other)Tests for order.intgetValue()Get value of enum item.java.lang.StringtoString()Human readable description of thisEnumitem.-
Methods inherited from class org.apache.commons.lang.enums.Enum
equals, getEnumClass, getName, hashCode
-
-
-
-
Method Detail
-
getValue
public final int getValue()
Get value of enum item.
- Returns:
- the enum item's value.
-
compareTo
public int compareTo(java.lang.Object other)
Tests for order.
The default ordering is numeric by value, but this can be overridden by subclasses.
NOTE: From v2.2 the enums must be of the same type. If the parameter is in a different class loader than this instance, reflection is used to compare the values.
- Specified by:
compareToin interfacejava.lang.Comparable- Overrides:
compareToin classEnum- Parameters:
other- the other object to compare to- Returns:
- -ve if this is less than the other object, +ve if greater than,
0of equal - Throws:
java.lang.ClassCastException- if other is not anEnumjava.lang.NullPointerException- if other isnull- See Also:
Comparable.compareTo(Object)
-
-