org.apache.avalon.framework
Class Enum

java.lang.Object
  extended by org.apache.avalon.framework.Enum
Direct Known Subclasses:
ValuedEnum

public abstract class Enum
extends java.lang.Object

Basic enum class for type-safe enums. Should be used as an abstract base. For example:

 import org.apache.avalon.framework.Enum;

 public final class Color extends Enum {
   public static final Color RED = new Color( "Red" );
   public static final Color GREEN = new Color( "Green" );
   public static final Color BLUE = new Color( "Blue" );

   private Color( final String color )
   {
     super( color );
   }
 }
 
If further operations, such as iterating over all items, are required, the Enum(String, Map) constructor can be used to populate a Map, from which further functionality can be derived:
 public final class Color extends Enum {
   static final Map map = new HashMap();

   public static final Color RED = new Color( "Red", map );
   public static final Color GREEN = new Color( "Green", map );
   public static final Color BLUE = new Color( "Blue", map );

   private Color( final String color, final Map map )
   {
     super( color, map );
   }

   public static Iterator iterator()
   {
     return map.values().iterator();
   }
 }
 

NOTE: between 4.0 and 4.1, the constructors' access has been changed from public to protected. This is to prevent users of the Enum breaking type-safety by defining new Enum items. All Enum items should be defined in the Enum class, as shown above.

Version:
CVS $Revision: 1.24 $ $Date: 2003/04/07 08:31:15 $
Author:
Avalon Development Team

Field Summary
private  java.lang.String m_name
          The string representation of the Enum.
 
Constructor Summary
protected Enum(java.lang.String name)
          Constructor to add a new named item.
protected Enum(java.lang.String name, java.util.Map map)
          Constructor to add a new named item.
 
Method Summary
 boolean equals(java.lang.Object other)
          Tests for equality.
 java.lang.String getName()
          Retrieve the name of this Enum item, set in the constructor.
 int hashCode()
          Returns a hash code value for the object.
 java.lang.String toString()
          Human readable description of this Enum item.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

m_name

private final java.lang.String m_name
The string representation of the Enum.

Constructor Detail

Enum

protected Enum(java.lang.String name)
Constructor to add a new named item.

Note: access changed from public to protected after 4.0. See class description.

Parameters:
name - Name of the item.

Enum

protected Enum(java.lang.String name,
               java.util.Map map)
Constructor to add a new named item.

Note: access changed from public to protected after 4.0. See class description.

Parameters:
name - Name of the item.
map - A Map, to which will be added a pointer to the newly constructed object.
Method Detail

equals

public final boolean equals(java.lang.Object other)
Tests for equality. Two Enum:s are considered equal if they have the same class names and the same names. Identity is tested for first, so this method runs fast. The method is also declared final - I (LSutic) did this to allow the JIT to inline it easily.

Overrides:
equals in class java.lang.Object
Parameters:
other - the other object
Returns:
the equality status

hashCode

public int hashCode()
Returns a hash code value for the object.

Overrides:
hashCode in class java.lang.Object
Returns:
a hash code value for this object

getName

public final java.lang.String getName()
Retrieve the name of this Enum item, set in the constructor.

Returns:
the name String of this Enum item

toString

public java.lang.String toString()
Human readable description of this Enum item. For use when debugging.

Overrides:
toString in class java.lang.Object
Returns:
String in the form type[name], eg.: Color[Red].