org.apache.commons.lang.enum
public abstract class ValuedEnum extends Enum
Deprecated: Replaced by {@link org.apache.commons.lang.enums.ValuedEnum org.apache.commons.lang.enums.ValuedEnum}
and will be removed in version 3.0. All classes in this package are deprecated and repackaged to
{@link org.apache.commons.lang.enums} since enum
is a Java 1.5 keyword.
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 {@link EnumUtils} class.
Since: 1.0
Version: $Id: ValuedEnum.java 161243 2005-04-14 04:30:28Z ggregory $
See Also: ValuedEnum
Constructor Summary | |
---|---|
protected | ValuedEnum(String name, int value)
Constructor for enum item.
|
Method Summary | |
---|---|
int | compareTo(Object other) Tests for order. The default ordering is numeric by value, but this can be overridden by subclasses. |
protected static Enum | getEnum(Class enumClass, int value) Gets an This method loops through the list of |
int | getValue() Get value of enum item. |
String | toString() Human readable description of this |
Parameters: name the name of enum item value the value of enum item
Tests for order.
The default ordering is numeric by value, but this can be overridden by subclasses.
Parameters: other the other object to compare to
Returns: -ve if this is less than the other object, +ve if greater than,
0
of equal
Throws: ClassCastException if other is not an Enum
NullPointerException if other is null
See Also: java.lang.Comparable#compareTo(Object)
Gets an Enum
object by class and value.
This method loops through the list of Enum
,
thus if there are many Enum
s this will be
slow.
Parameters: enumClass the class of the Enum
to get value the value of the Enum
to get
Returns: the enum object, or null if the enum does not exist
Throws: IllegalArgumentException if the enum class is null
Get value of enum item.
Returns: the enum item's value.
Human readable description of this Enum
item.
Returns: String in the form type[name=value]
, for example:
JavaVersion[Java 1.0=100]
. Note that the package name is
stripped from the type name.