org.apache.commons.lang.enum
Class ValuedEnum
java.lang.Object
|
+--org.apache.commons.lang.enum.Enum
|
+--org.apache.commons.lang.enum.ValuedEnum
- All Implemented Interfaces:
- java.lang.Comparable, java.io.Serializable
- public abstract class ValuedEnum
- extends Enum
Abstract superclass for type-safe enums with integer values.
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 JavaVersion 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.
NOTE: This class originated in the Jakarta Avalon project.
- Version:
- $Id: ValuedEnum.java,v 1.1 2002/08/11 23:17:54 scolebourne Exp $
- Author:
- Stephen Colebourne
- See Also:
- Serialized Form
Inner classes inherited from class org.apache.commons.lang.enum.Enum |
Enum.Entry |
Field Summary |
private int |
iValue
The value contained in enum. |
Constructor Summary |
protected |
ValuedEnum(java.lang.String name,
int value)
Constructor for enum item. |
Method Summary |
int |
compareTo(java.lang.Object other)
Tests for order. |
protected static Enum |
getEnum(java.lang.Class enumClass,
int value)
Gets an Enum object by class and value. |
int |
getValue()
Get value of enum item. |
java.lang.String |
toString()
Human readable description of this Enum item. |
Methods inherited from class java.lang.Object |
, clone, finalize, getClass, notify, notifyAll, registerNatives, wait, wait, wait |
iValue
private final int iValue
- The value contained in enum.
ValuedEnum
protected ValuedEnum(java.lang.String name,
int value)
- Constructor for enum item.
- Parameters:
name
- the name of enum item.value
- the value of enum item.
getEnum
protected static Enum getEnum(java.lang.Class enumClass,
int value)
- Gets an Enum object by class and value.
This method loops through the list of Enums, thus if there
are many Enums this will be slow.
- Parameters:
enumClass
- the class of the Enum to getvalue
- the value of the Enum to get- Returns:
- the enum object, or null if the enum does not exist
- Throws:
java.lang.IllegalArgumentException
- if the enum class is null
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.
- Overrides:
compareTo
in class Enum
- 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 EnumNullPointerException
- if other is null- See Also:
Comparable.compareTo(Object)
toString
public java.lang.String toString()
- Human readable description of this Enum item. For use when debugging.
- Overrides:
toString
in class Enum
- 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.
Copyright (c) 2001-2002 - Apache Software Foundation