Skip to content

Instantly share code, notes, and snippets.

@dmikurube
Last active March 28, 2017 06:31
Show Gist options
  • Save dmikurube/2fa0da5a82ceeaec12190e6efead2dfe to your computer and use it in GitHub Desktop.
Save dmikurube/2fa0da5a82ceeaec12190e6efead2dfe to your computer and use it in GitHub Desktop.
Java: Map from any value to Enum
import java.util.HashMap;
public class MapEnum {
public static void main(String[] args) {
System.out.println(OrdinalEnum.FIRST.getCardinal());
System.out.println(OrdinalEnum.ofNumber(2).toString());
System.out.println(OrdinalEnum.ofCardinal("three").toString());
}
private static enum OrdinalEnum {
FIRST(1, "one"),
SECOND(2, "two"),
THIRD(3, "three"),
;
private OrdinalEnum(int number, String cardinal) {
this.number = number;
this.cardinal = cardinal;
}
public static OrdinalEnum ofNumber(int number) {
return fromNumber.get(number);
}
public static OrdinalEnum ofCardinal(String cardinal) {
return fromCardinal.get(cardinal);
}
public final int getNumber()
{
return this.number;
}
public final String getCardinal()
{
return this.cardinal;
}
private final int number;
private final String cardinal;
private final static HashMap<Integer, OrdinalEnum> fromNumber;
private final static HashMap<String, OrdinalEnum> fromCardinal;
static {
fromNumber = new HashMap<Integer, OrdinalEnum>();
fromCardinal = new HashMap<String, OrdinalEnum>();
for (OrdinalEnum enumValue : values()) {
fromNumber.put(enumValue.getNumber(), enumValue);
fromCardinal.put(enumValue.getCardinal(), enumValue);
}
}
}
}
@dmikurube
Copy link
Author

one
SECOND
THIRD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment