Can I get an enum based on the value of its field?
enums, java, string
Solution
For reference, here is an alternative solution with a HashMap:
enum CrimeCategory {
ASBO("Anti Social Behaviour"),
BURG("Burglary"),
CRIMDAM("Criminal Damage And Arson"),
DRUGS("Drugs"),
OTHTHEFT("Other Theft"),
PUPDISOR("Public Disorder And Weapons"),
ROBBERY("Robbery"),
SHOPLIF("Shoplifting"),
VEHICLE("Vehicle Crime"),
VIOLENT("Violent Crime"),
OTHER("Other Crime");
private static final Map<String, CrimeCategory> map = new HashMap<>(values().length, 1);
static {
for (CrimeCategory c : values()) map.put(c.category, c);
}
private final String category;
private CrimeCategory(String category) {
this.category = category;
}
public static CrimeCategory of(String name) {
CrimeCategory result = map.get(name);
if (result == null) {
throw new IllegalArgumentException("Invalid category name: " + name);
}
return result;
}
}
Problem
I want to get a specific enum based on its field value. Enum: ``` public enum CrimeCategory { ASBO ("Anti Social Behaviour"), BURG ("Burglary"), CRIMDAM ("Criminal Damage And Arson"), DRUGS ("Drugs"), OTHTHEFT ("Other Theft"), PUPDISOR ("Public Disorder And Weapons"), ROBBERY ("Robbery"), SHOPLIF ("Shoplifting"), VEHICLE ("Vehicle Crime"), VIOLENT ("Violent Crime"), OTHER ("Other Crime"); private String category; private CrimeCategory (String category) { this.category = category; } public String returnString() { return category; } } ``` Getting a new Enum: ``` aStringRecivedFromJson = "Anti Social Behaviour" CrimeCategory crimeCategoryEnum; crimeCategoryEnum = CrimeCategory.valueOf(aStringRecivedFromJson); ``` I have been trying to work out a way for the above bring back a an enum so it can be passed stored in a `HashMap` with other `Crime` information. Expected Result: `ASBO`