public static <T extends Enum<T>> T getInstance(final String value, final Class<T> enumClass) {
return Enum.valueOf(enumClass, value);
}
And the method is to be used as:
final Shape shape = getInstance("CAT", Shape.class);
Then again, you can always use
final Shape shape = Shape.valueOf("CAT");
which is a shortcut for
Enum.valueOf(Shape.class, "CAT");