public static String[] getValues(Class<?> enumType) { ReflectEnum reflectEnum = ReflectEnum.of(enumType); String[] values = new String[enumType.getEnumConstants().length]; for(int i=0;i<values.length;i++) { Object e = enumType.getEnumConstants()[i]; String v = reflectEnum.isValued() ? String.valueOf(reflectEnum.getValue(e)) : e.toString(); values[i] = v; } return values; }
public static Object getValue(Enum<?> enumObject) { ReflectEnum reflectEnum = ReflectEnum.of(enumObject.getClass()); if(reflectEnum.isValued()){ return reflectEnum.getValue(enumObject); }else{ return enumObject.toString(); } }
public static <E extends Enum<?>> E valueOf(Class<E> enumType,Object value) throws IllegalStateException{ if(null == value){ return null; } String stringValue = value.toString(); ReflectEnum reflectEnum = ReflectEnum.of(enumType); if(reflectEnum.isValued()){ for(E e : enumType.getEnumConstants()){ if(reflectEnum.getValue(e).toString().equals(stringValue)){ return e; } } }else{ if(stringValue.equals("")){ return null; } for(E e : enumType.getEnumConstants()){ if(e.toString().equals(stringValue)){ return e; } } } throw new IllegalStateException("Invalid enum value '" + value + "' of type '" + enumType.getName() + "'"); }
public static <E extends Enum<?>> E valueOrNameOf(Class<E> enumType,Object valueOrName) throws IllegalStateException{ if(Objects2.isEmpty(valueOrName)){ return null; } String stringValue = valueOrName.toString(); ReflectEnum reflectEnum = ReflectEnum.of(enumType); if(reflectEnum.isValued()){ for(E e : enumType.getEnumConstants()){ if(reflectEnum.getValue(e).toString().equals(stringValue)){ return e; } } } for(E e : enumType.getEnumConstants()){ if(e.toString().equals(stringValue)){ return e; } } throw new IllegalStateException("Invalid enum value '" + valueOrName + "' of type '" + enumType.getName() + "'"); }