Skip to content

Instantly share code, notes, and snippets.

@dsoike
Created May 15, 2017 19:51
Show Gist options
  • Save dsoike/dda2538d4334a871c047cc4da71ef7cd to your computer and use it in GitHub Desktop.
Save dsoike/dda2538d4334a871c047cc4da71ef7cd to your computer and use it in GitHub Desktop.
Custom Enum - Android/Java
package com.my_domain.app_name;
/**
* Custom Enumeration
* - Custom implementation enables overriding an enum's value.
* - http://stackoverflow.com/questions/9662170/override-valueof-and-tostring-in-java-enum
*/
public enum CustomEnum {
// ---------------------------------------------------------------------------------------------
// region Enum Values
FIRST("first"),
SECOND("second"),
THIRD("custom-value-for-third"),
UNKNOWN("unknown");
private String value;
// endregion
// ---------------------------------------------------------------------------------------------
// region Initialization
CustomEnum(String value) {
this.value = value;
}
// endregion
// ---------------------------------------------------------------------------------------------
// region Override Methods
/**
* Override 'toString()'
* - This allows CustomEnum.THIRD.toString() to return 'custom-value-for-third' instead of 'Third'.
*/
@Override
public String toString() {
return this.getValue();
}
// endregion
// ---------------------------------------------------------------------------------------------
// region Methods
public String getValue() {
return value;
}
/**
* getEnumFor(String value)
* - Use this custom method instead of build in 'CustomEnum.valueOf()' b/c it works for custom enum values.
* @param value - String that corresponds to enum value.
* @return - CustomEnum
*/
public static CustomEnum getEnumFor(String value) {
for(CustomEnum customEnum : CustomEnum.values()) {
if (customEnum.getValue().equalsIgnoreCase(value)) {
return customEnum;
}
}
return CustomEnum.UNKNOWN;
}
// endregion
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment