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