org.apache.commons.lang.enum
public abstract class ValuedEnum extends Enum
Deprecated: Replaced by org.apache.commons.lang.enums.ValuedEnum
and will be removed in version 3.0. All classes in this package are deprecated and repackaged to
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(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
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.
Since: 1.0
Version: $Id: ValuedEnum.java 441929 2006-09-10 08:04:17Z bayard $
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 Enums 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.