Enums
Date: 2016-05-24

com.google.common.base

## Class Enums

- java.lang.Object
- - com.google.common.base.Enums

-     @CheckReturnValue
      @GwtCompatible(emulated=true)
      @Beta
      public final class Enums
      extends java.lang.Object

  Utility methods for working with `Enum` instances.
  Since:
    9.0

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static java.lang.reflect.Field` | `getField(java.lang.Enum<?> enumValue)` Returns the `Field` in which `enumValue` is defined.
    `static <T extends java.lang.Enum<T>> Optional<T>` | `getIfPresent(java.lang.Class<T> enumClass, java.lang.String value)` Returns an optional enum constant for the given type, using `Enum.valueOf(java.lang.Class<T>, java.lang.String)`.
    `static <T extends java.lang.Enum<T>> Converter<java.lang.String,T>` | `stringConverter(java.lang.Class<T> enumClass)` Returns a converter that converts between strings and `enum` values of type `enumClass` using `Enum.valueOf(Class, String)` and `Enum.name()`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getField

          @GwtIncompatible(value="reflection")
          public static java.lang.reflect.Field getField(java.lang.Enum<?> enumValue)

      Returns the `Field` in which `enumValue` is defined. For example, to get the `Description` annotation on the `GOLF` constant of enum `Sport`, use `Enums.getField(Sport.GOLF).getAnnotation(Description.class)`.
      Since:
        12.0

    - #### getIfPresent

          public static <T extends java.lang.Enum<T>> Optional<T> getIfPresent(java.lang.Class<T> enumClass,
                                                               java.lang.String value)

      Returns an optional enum constant for the given type, using `Enum.valueOf(java.lang.Class<T>, java.lang.String)`. If the constant does not exist, `Optional.absent()` is returned. A common use case is for parsing user input or falling back to a default enum constant. For example, `Enums.getIfPresent(Country.class, countryInput).or(Country.DEFAULT);`
      Since:
        12.0

    - #### stringConverter

          public static <T extends java.lang.Enum<T>> Converter<java.lang.String,T> stringConverter(java.lang.Class<T> enumClass)

      Returns a converter that converts between strings and `enum` values of type `enumClass` using `Enum.valueOf(Class, String)` and `Enum.name()`. The converter will throw an `IllegalArgumentException` if the argument is not the name of any enum constant in the specified enum.
      Since:
        16.0