org.apache.commons.lang3
Class EnumUtils

java.lang.Object
  extended by org.apache.commons.lang3.EnumUtils

public class EnumUtils
extends Object

Utility library to provide helper methods for Java enums.

#ThreadSafe#

Since:
3.0
Version:
$Id: EnumUtils.java 1149320 2011-07-21 19:11:47Z mbenson $

Constructor Summary
EnumUtils()
          This constructor is public to permit tools that require a JavaBean instance to operate.
 
Method Summary
static
<E extends Enum<E>>
long
generateBitVector(Class<E> enumClass, E... values)
          Creates a long bit vector representation of the given array of Enum values.
static
<E extends Enum<E>>
long
generateBitVector(Class<E> enumClass, Iterable<E> values)
          Creates a long bit vector representation of the given subset of an Enum.
static
<E extends Enum<E>>
E
getEnum(Class<E> enumClass, String enumName)
          Gets the enum for the class, returning null if not found.
static
<E extends Enum<E>>
List<E>
getEnumList(Class<E> enumClass)
          Gets the List of enums.
static
<E extends Enum<E>>
Map<String,E>
getEnumMap(Class<E> enumClass)
          Gets the Map of enums by name.
static
<E extends Enum<E>>
boolean
isValidEnum(Class<E> enumClass, String enumName)
          Checks if the specified name is a valid enum for the class.
static
<E extends Enum<E>>
EnumSet<E>
processBitVector(Class<E> enumClass, long value)
          Convert a long value created by generateBitVector(java.lang.Class, java.lang.Iterable) into the set of enum values that it represents.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EnumUtils

public EnumUtils()
This constructor is public to permit tools that require a JavaBean instance to operate.

Method Detail

getEnumMap

public static <E extends Enum<E>> Map<String,E> getEnumMap(Class<E> enumClass)

Gets the Map of enums by name.

This method is useful when you need a map of enums by name.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum to query, not null
Returns:
the modifiable map of enum names to enums, never null

getEnumList

public static <E extends Enum<E>> List<E> getEnumList(Class<E> enumClass)

Gets the List of enums.

This method is useful when you need a list of enums rather than an array.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum to query, not null
Returns:
the modifiable list of enums, never null

isValidEnum

public static <E extends Enum<E>> boolean isValidEnum(Class<E> enumClass,
                                                      String enumName)

Checks if the specified name is a valid enum for the class.

This method differs from Enum.valueOf(java.lang.Class, java.lang.String) in that checks if the name is a valid enum without needing to catch the exception.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum to query, not null
enumName - the enum name, null returns false
Returns:
true if the enum name is valid, otherwise false

getEnum

public static <E extends Enum<E>> E getEnum(Class<E> enumClass,
                                            String enumName)

Gets the enum for the class, returning null if not found.

This method differs from Enum.valueOf(java.lang.Class, java.lang.String) in that it does not throw an exception for an invalid enum name.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum to query, not null
enumName - the enum name, null returns null
Returns:
the enum, null if not found

generateBitVector

public static <E extends Enum<E>> long generateBitVector(Class<E> enumClass,
                                                         Iterable<E> values)

Creates a long bit vector representation of the given subset of an Enum.

This generates a value that is usable by processBitVector(java.lang.Class, long).

Do not use this method if you have more than 64 values in your Enum, as this would create a value greater than a long can hold.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum we are working with, not null
values - the values we want to convert, not null
Returns:
a long whose binary value represents the given set of enum values.
Throws:
NullPointerException - if enumClass or values is null
IllegalArgumentException - if enumClass is not an enum class or has more than 64 values
Since:
3.0.1

generateBitVector

public static <E extends Enum<E>> long generateBitVector(Class<E> enumClass,
                                                         E... values)

Creates a long bit vector representation of the given array of Enum values.

This generates a value that is usable by processBitVector(java.lang.Class, long).

Do not use this method if you have more than 64 values in your Enum, as this would create a value greater than a long can hold.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum we are working with, not null
values - the values we want to convert, not null
Returns:
a long whose binary value represents the given set of enum values.
Throws:
NullPointerException - if enumClass or values is null
IllegalArgumentException - if enumClass is not an enum class or has more than 64 values
Since:
3.0.1

processBitVector

public static <E extends Enum<E>> EnumSet<E> processBitVector(Class<E> enumClass,
                                                              long value)

Convert a long value created by generateBitVector(java.lang.Class, java.lang.Iterable) into the set of enum values that it represents.

If you store this value, beware any changes to the enum that would affect ordinal values.

Type Parameters:
E - the type of the enumeration
Parameters:
enumClass - the class of the enum we are working with, not null
value - the long value representation of a set of enum values
Returns:
a set of enum values
Throws:
NullPointerException - if enumClass is null
IllegalArgumentException - if enumClass is not an enum class or has more than 64 values
Since:
3.0.1


Copyright © 2001-2011 The Apache Software Foundation. All Rights Reserved.