package org.handwerkszeug.riak.util; public class EnumUtil { public interface VariableEnum { int getValue(); } public static <E extends Enum<E> & VariableEnum> E find(E[] values, int value) { E result = find(values, value, null); if (result == null) { throw new IllegalArgumentException("value=" + value); } return result; } public static <E extends Enum<E> & VariableEnum> E find(E[] values, int value, E defaultValue) { for (E e : values) { if (e.getValue() == value) { return e; } } return defaultValue; } public static <E extends Enum<E>> E find(E[] values, String value, E defaultValue) { if ((value == null) || value.isEmpty()) { return defaultValue; } String key = value.toUpperCase(); for (E e : values) { if (e.name().equals(key)) { return e; } } return defaultValue; } }