public class EnumUtils
extends java.lang.Object
Utility library to provide helper methods for Java enums.
#ThreadSafe#
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CANNOT_STORE_S_S_VALUES_IN_S_BITS |
private static java.lang.String |
ENUM_CLASS_MUST_BE_DEFINED |
private static java.lang.String |
NULL_ELEMENTS_NOT_PERMITTED |
private static java.lang.String |
S_DOES_NOT_SEEM_TO_BE_AN_ENUM_TYPE |
Constructor and Description |
---|
EnumUtils()
This constructor is public to permit tools that require a JavaBean
instance to operate.
|
Modifier and Type | Method and Description |
---|---|
private static <E extends java.lang.Enum<E>> |
asEnum(java.lang.Class<E> enumClass)
Validate
enumClass . |
private static <E extends java.lang.Enum<E>> |
checkBitVectorable(java.lang.Class<E> enumClass)
Validate that
enumClass is compatible with representation in a long . |
static <E extends java.lang.Enum<E>> |
generateBitVector(java.lang.Class<E> enumClass,
E... values)
Creates a long bit vector representation of the given array of Enum values.
|
static <E extends java.lang.Enum<E>> |
generateBitVector(java.lang.Class<E> enumClass,
java.lang.Iterable<? extends E> values)
Creates a long bit vector representation of the given subset of an Enum.
|
static <E extends java.lang.Enum<E>> |
generateBitVectors(java.lang.Class<E> enumClass,
E... values)
Creates a bit vector representation of the given subset of an Enum using as many
long s as needed. |
static <E extends java.lang.Enum<E>> |
generateBitVectors(java.lang.Class<E> enumClass,
java.lang.Iterable<? extends E> values)
Creates a bit vector representation of the given subset of an Enum using as many
long s as needed. |
static <E extends java.lang.Enum<E>> |
getEnum(java.lang.Class<E> enumClass,
java.lang.String enumName)
Gets the enum for the class, returning
null if not found. |
static <E extends java.lang.Enum<E>> |
getEnumList(java.lang.Class<E> enumClass)
Gets the
List of enums. |
static <E extends java.lang.Enum<E>> |
getEnumMap(java.lang.Class<E> enumClass)
Gets the
Map of enums by name. |
static <E extends java.lang.Enum<E>> |
isValidEnum(java.lang.Class<E> enumClass,
java.lang.String enumName)
Checks if the specified name is a valid enum for the class.
|
static <E extends java.lang.Enum<E>> |
processBitVector(java.lang.Class<E> enumClass,
long value)
Convert a long value created by
generateBitVector(java.lang.Class<E>, java.lang.Iterable<? extends E>) into the set of
enum values that it represents. |
static <E extends java.lang.Enum<E>> |
processBitVectors(java.lang.Class<E> enumClass,
long... values)
Convert a
long[] created by generateBitVectors(java.lang.Class<E>, java.lang.Iterable<? extends E>) into the set of
enum values that it represents. |
private static final java.lang.String NULL_ELEMENTS_NOT_PERMITTED
private static final java.lang.String CANNOT_STORE_S_S_VALUES_IN_S_BITS
private static final java.lang.String S_DOES_NOT_SEEM_TO_BE_AN_ENUM_TYPE
private static final java.lang.String ENUM_CLASS_MUST_BE_DEFINED
public EnumUtils()
public static <E extends java.lang.Enum<E>> java.util.Map<java.lang.String,E> getEnumMap(java.lang.Class<E> enumClass)
Gets the Map
of enums by name.
This method is useful when you need a map of enums by name.
E
- the type of the enumerationenumClass
- the class of the enum to query, not nullpublic static <E extends java.lang.Enum<E>> java.util.List<E> getEnumList(java.lang.Class<E> enumClass)
Gets the List
of enums.
This method is useful when you need a list of enums rather than an array.
E
- the type of the enumerationenumClass
- the class of the enum to query, not nullpublic static <E extends java.lang.Enum<E>> boolean isValidEnum(java.lang.Class<E> enumClass, java.lang.String enumName)
Checks if the specified name is a valid enum for the class.
This method differs from Enum.valueOf(java.lang.Class<T>, java.lang.String)
in that checks if the name is
a valid enum without needing to catch the exception.
E
- the type of the enumerationenumClass
- the class of the enum to query, not nullenumName
- the enum name, null returns falsepublic static <E extends java.lang.Enum<E>> E getEnum(java.lang.Class<E> enumClass, java.lang.String enumName)
Gets the enum for the class, returning null
if not found.
This method differs from Enum.valueOf(java.lang.Class<T>, java.lang.String)
in that it does not throw an exception
for an invalid enum name.
E
- the type of the enumerationenumClass
- the class of the enum to query, not nullenumName
- the enum name, null returns nullpublic static <E extends java.lang.Enum<E>> long generateBitVector(java.lang.Class<E> enumClass, java.lang.Iterable<? extends 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<E>, 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.
E
- the type of the enumerationenumClass
- the class of the enum we are working with, not null
values
- the values we want to convert, not null
, neither containing null
java.lang.NullPointerException
- if enumClass
or values
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class or has more than 64 values,
or if any values
null
generateBitVectors(Class, Iterable)
public static <E extends java.lang.Enum<E>> long[] generateBitVectors(java.lang.Class<E> enumClass, java.lang.Iterable<? extends E> values)
Creates a bit vector representation of the given subset of an Enum using as many long
s as needed.
This generates a value that is usable by processBitVectors(java.lang.Class<E>, long...)
.
Use this method if you have more than 64 values in your Enum.
E
- the type of the enumerationenumClass
- the class of the enum we are working with, not null
values
- the values we want to convert, not null
, neither containing null
java.lang.NullPointerException
- if enumClass
or values
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class, or if any values
null
public static <E extends java.lang.Enum<E>> long generateBitVector(java.lang.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<E>, 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.
E
- the type of the enumerationenumClass
- the class of the enum we are working with, not null
values
- the values we want to convert, not null
java.lang.NullPointerException
- if enumClass
or values
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class or has more than 64 valuesgenerateBitVectors(Class, Iterable)
public static <E extends java.lang.Enum<E>> long[] generateBitVectors(java.lang.Class<E> enumClass, E... values)
Creates a bit vector representation of the given subset of an Enum using as many long
s as needed.
This generates a value that is usable by processBitVectors(java.lang.Class<E>, long...)
.
Use this method if you have more than 64 values in your Enum.
E
- the type of the enumerationenumClass
- the class of the enum we are working with, not null
values
- the values we want to convert, not null
, neither containing null
java.lang.NullPointerException
- if enumClass
or values
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class, or if any values
null
public static <E extends java.lang.Enum<E>> java.util.EnumSet<E> processBitVector(java.lang.Class<E> enumClass, long value)
Convert a long value created by generateBitVector(java.lang.Class<E>, java.lang.Iterable<? extends E>)
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.
E
- the type of the enumerationenumClass
- the class of the enum we are working with, not null
value
- the long value representation of a set of enum valuesjava.lang.NullPointerException
- if enumClass
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class or has more than 64 valuespublic static <E extends java.lang.Enum<E>> java.util.EnumSet<E> processBitVectors(java.lang.Class<E> enumClass, long... values)
Convert a long[]
created by generateBitVectors(java.lang.Class<E>, java.lang.Iterable<? extends E>)
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.
E
- the type of the enumerationenumClass
- the class of the enum we are working with, not null
values
- the long[] bearing the representation of a set of enum values, least significant digits rightmost, not null
java.lang.NullPointerException
- if enumClass
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum classprivate static <E extends java.lang.Enum<E>> java.lang.Class<E> checkBitVectorable(java.lang.Class<E> enumClass)
enumClass
is compatible with representation in a long
.E
- the type of the enumerationenumClass
- to checkenumClass
java.lang.NullPointerException
- if enumClass
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class or has more than 64 valuesprivate static <E extends java.lang.Enum<E>> java.lang.Class<E> asEnum(java.lang.Class<E> enumClass)
enumClass
.E
- the type of the enumerationenumClass
- to checkenumClass
java.lang.NullPointerException
- if enumClass
is null
java.lang.IllegalArgumentException
- if enumClass
is not an enum class